2015-12-28 4 views
5

Ich habe gerade die neueste Python 2.7.11 64bit von seiner offiziellen Website heruntergeladen und installiert es auf meinem Windows 10. Und ich fand, dass, wenn die neue IDLE-Datei chinesische Zeichen wie 你好 enthält, dann kann ich die Datei nicht speichern. Wenn ich versucht habe, es mehrmals zu speichern, ist die neue Datei abgestürzt und verschwunden.Warum kann ich keine Datei mit chinesischen Schriftzeichen speichern, wenn ich Python 2.7.11 IDLE verwende?

Ich habe auch die neueste python-3.5.1-amd64.exe installiert, und dieses Problem hat dieses Problem nicht.

Wie löst man es?

Mehr: Ein Beispiel-Code von Wiki-Seite https://zh.wikipedia.org/wiki/%E9%B8%AD%E5%AD%90%E7%B1%BB%E5%9E%8B

Wenn ich hinter dem Code hier, warnen Stackoverflow alays mich: Körper kann nicht enthalten "Ich habe gerade dow". Warum?

Vielen Dank!

enter image description here

Mehr: Ich finde diese Konfigurationsoption, aber es überhaupt nicht helfen. IDLE -> Optionen -> IDLE Konfigurieren -> Allgemein -> Standardquelle Kodierung: UTF-8

Mehr: von u vor dem chinesischen Code hinzufügen, wird alles in Ordnung, es ist gute Möglichkeit. Wie unten: enter image description here

Ohne u dort, manchmal wird es mit beschädigtem Code gehen. Wie unten: enter image description here

+0

Bitte geben Sie einen minimalen funktionierenden Beispielcode ein. –

Antwort

2

Python 2.x verwendet ASCII als Standardcodierung, während Python 3.x UTF-8 verwendet. Verwenden Sie einfach:
my_string.encode("utf-8")
ascii auf utf-8 zu konvertieren (oder es zu anderen ändern kodieren Sie benötigen)

Sie können auch diese Linie versuchen, auf der ersten Zeile des Codes zu setzen:

# -*- coding: utf-8 -*- 
+0

Der letzte von Ihnen erwähnte Weg funktioniert! –

2

Python 2 verwendet ASCII als Standardcodierung für seine Zeichenfolgen, die keine chinesischen Zeichen speichern können. Auf der anderen Seite verwendet Python 3 standardmäßig die Unicode-Codierung für seine Zeichenfolgen, die chinesische Zeichen speichern können.

Aber das bedeutet nicht, dass Python 2 keine Unicode-Zeichenfolgen verwenden kann. Sie müssen nur Ihre Strings in Unicode codieren. Hier sehen Sie ein Beispiel, wie Sie Ihre Strings in Unicode-Strings konvertieren.

>>> plain_text = "Plain text" 
>>> plain_text 
'Plain text' 
>>> utf8_text = unicode(plain_text, "utf-8") 
>>> utf8_txt 
u'Plain_text' 

Das Präfix u in der Zeichenfolge, sagt utf8_txt, dass es sich um eine Unicode-Zeichenfolge ist.

Sie könnten dies auch tun.

>>> print u"你好" 
>>> 你好 

Sie müssen nur mit u Zeichenfolge voranstellen, um anzuzeigen, dass es sich um eine Unicode-Zeichenfolge ist.

+0

Hinzufügen von 'u' ist großartig! –

0

Wenn Python 2 unter Windows mit:

  1. Für Datei mit Unicode-Zeichen in IDLE, eine Linie

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

    muss hinzugefügt werden, in seinem Anfang gespeichert werden.

  2. Und für Unicode-Zeichen in Windows richtig in Konsolenausgabe zeigen, einen Skript, wenn ausgeführt wird, in einer Datei gespeichert, in IDLE-Konsole oder in Windows-Shell, Strings mit u vorangestellt werden muß:

    print u"你好" 
    print u"Привет" 
    

    Aber im interaktiven Modus habe ich keine Notwendigkeit dafür mit kyrillischen entdeckt.

Verwandte Themen