www.mikrocontroller.net

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


Autor: haps (Gast)
Datum:

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

Direkt:
>echo °
°

funktioniert dagegen.

Autor: haps (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wow, google is fast. for international folks: centigrade, degree symbol, 
garbage, celsius.

Autor: Simon Budig (nomis)
Datum:

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

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

Viele Grüße,
        Simon

Autor: haps (Gast)
Datum:

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

Autor: haps (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das
# -*- coding: utf-8 -*-
print "°"
print u"°".encode('cp1252')

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

Font im "Dos-Fenster" ist Lucida Console

Autor: haps (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
print u"°" klappt.

Autor: haps (Gast)
Datum:

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

Autor: haps (Gast)
Datum:

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.