Forum: PC-Programmierung python, cmd.exe: print "°"


von haps (Gast)


Lesenswert?

Mhh, wie bekomme ich Python unter Windows cmd.exe dazu, mir das 
Gradzeichen auszuspucken?
1
# -*- coding: utf-8 -*-
2
print "°"
Erzeugt zwei Müllzeichen
1
print "°"
Erzeugt ein Müllzeichen

Direkt:
1
>echo °
2
°

funktioniert dagegen.

von haps (Gast)


Lesenswert?

wow, google is fast. for international folks: centigrade, degree symbol, 
garbage, celsius.

von Simon B. (nomis)


Lesenswert?

Dein Eingabetext ist UTF-8, das windows cmd.exe spricht vermutlich CP 
1252.

Probier mal
1
print u"°".encode('cp1252')

Viele Grüße,
        Simon

von haps (Gast)


Lesenswert?

Hat dasselbe Ergebnis wie ein nicht-UTF-8 kodiertes Skript:
1
# -*- coding: utf-8 -*-
2
print "°"
3
print u"°".encode('cp1252')
1
┬░
2

von haps (Gast)


Lesenswert?

das
1
# -*- coding: utf-8 -*-
2
print "°"
3
print u"°".encode('cp1252')
4
5
char = 0
6
print "  ",
7
for n in range(15):
8
  print "{:02x}".format(n),
9
print
10
for y in range(15):
11
  print "{:02x}".format(y),
12
  for x in range(15):
13
    print "{:2}".format( chr(char) ),
14
    char += 1
15
  print
macht das:
1
┬░
2
3
   00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e
4
00    ☺  ☻  ♥  ♦  ♣  ♠
5
  ♫  ♀
6
01 ☼  ►  ◄  ↕  ‼  ¶  §  ▬  ↨  ↑  ↓  →  ←  ∟  ↔
7
02 ▲  ▼     !  "  #  $  %  &  '  (  )  *  +  ,
8
03 -  .  /  0  1  2  3  4  5  6  7  8  9  :  ;
9
04 <  =  >  ?  @  A  B  C  D  E  F  G  H  I  J
10
05 K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y
11
06 Z  [  \  ]  ^  _  `  a  b  c  d  e  f  g  h
12
07 i  j  k  l  m  n  o  p  q  r  s  t  u  v  w
13
08 x  y  z  {  |  }  ~    Ç  ü  é  â  ä  à  å
14
09 ç  ê  ë  è  ï  î  ì  Ä  Å  É  æ  Æ  ô  ö  ò
15
0a û  ù  ÿ  Ö  Ü  ø  £  Ø  ×  ƒ  á  í  ó  ú  ñ
16
0b Ñ  ª  º  ¿  ®  ¬  ½  ¼  ¡  «  »  ░  ▒  ▓  │
17
0c ┤  Á  Â  À  ©  ╣  ║  ╗  ╝  ¢  ¥  ┐  └  ┴  ┬
18
0d ├  ─  ┼  ã  Ã  ╚  ╔  ╩  ╦  ╠  ═  ╬  ¤  ð  Ð
19
0e Ê  Ë  È  ı  Í  Î  Ï  ┘  ┌  █  ▄  ¦  Ì  ▀  Ó

Font im "Dos-Fenster" ist Lucida Console

von haps (Gast)


Lesenswert?

print u"°" klappt.

von haps (Gast)


Lesenswert?

print u"{:2d} °C".format( 42) klappt nicht.

von haps (Gast)


Lesenswert?

klappt doch, es geht mit format() allerdings nicht.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das "DOS-Fenster" ist keines, aber es nutzt standardmäßig CP437 bzw. 
850, und nicht 1252.

Mit den Win32-API-Funktionen SetConsoleOutputCP und SetConsoleCP 
lässt sich die von Konsolenprozessen verwendete Codepage einstellen.

Sinnvolle Resultate erhält man allerdings nur, wenn die Konsole nicht 
einen der standardmäßig eingerichteten Pixelfonts verwendet, denn die 
sind ausschließlich auf CP437/850 ausgerichtet.

"Lucida Console" ist genauso wie "Andale Mono" oder "Consolas" ein 
vollwertiger Truetype-Font, weist dieses Problem also nicht auf.

Seit Vista ist es übrigens endlich möglich, die verwendete Schriftart 
eines Konsolenfenster programmatisch festzulegen, dazu dient die 
Win32-API-Funktion SetCurrentConsoleFontEx.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.