2017-04-15 1 views
0

das folgende Python-Programm AusführenWarum verursacht das Drucken der Zeichenfolge "Hühnchen" in der Eingabeaufforderung unter Windows 7 eine Fehlermeldung "Keine solche Datei oder Verzeichnis" Fehler?

test.py:

# -*- coding: utf-8 -*- 

print "Hühnchen" 

hexdump:

00000000 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 |# -*- coding: ut| 
00000010 66 2d 38 20 2d 2a 2d 20 0a 0a 70 72 69 6e 74 20 |f-8 -*- ..print | 
00000020 22 48 c3 bc 68 6e 63 68 65 6e 22 0a    |"H..hnchen".| 

von der Eingabeaufforderung in Windows 7 mit Codepage 65001 und die Schriftart Lucida Console ein IOError verursacht :

$ python test.py 
HühnchenTraceback (most recent call last): 
    File "test.py", line 3, in <module> 
    print "Hühnchen" 
IOError: [Errno 2] No such file or directory 

Um Nebenwirkungen meiner Windows-Installation ausschließen reproduzierte ich das Problem in einer neuen virtuellen Maschine mit den folgenden Schritten:

  1. Installieren von Windows 7 Ultimate SP1 Build-7601 (SHA1 der ISO: 36ae90defbad9d9539e649b193ae573b77a71c83) in einer virtuellen Maschine
  2. installieren python 2.7.13 64-bit
  3. öffnen cmd.exe
  4. die Schriftart auf Lucida Console Set
  5. ändern der Codepage 65001 UTF-8
  6. Execute t unterstützen er obige Skript (stellen Sie sicher, dass die Datei-Kodierung UTF-8 ist)

Mit dem gleichen Ergebnis: enter image description here

Was hier geschieht?

Antwort

0

Der einzige Weg, wie ich diesen Fehler neu erstellen konnte, war, auf Lucida zu wechseln und den Befehl chcp 65001 auszuführen, bevor das Programm ausgeführt wurde. Laut diesem Beitrag ist "vor Windows 8 auch die Ausgabe mit Codepage 65001 fehlerhaft" [1]. Wenn Sie nur "Hühnchen" oder irgendwelche Zeichen mit UTF-8 drucken wollen, ist die beste Lösung, dies nicht von der Kommandozeile aus zu tun, da es immer die Charaktere zu vermasseln scheint. Wenn ich den gleichen Code auf PyCharm CE lief, funktionierte es gut und sogar wenn ich die Python 2.7 Eingabeaufforderung öffnete, druckte es immer noch richtig. Es scheint ein sehr Nischenproblem zu sein, das Sie erfahren sollten, das in der Lage sein sollte, herum zu arbeiten.

[1] chcp 65001 codepage results in program termination without any error

Verwandte Themen