Heim >Backend-Entwicklung >Python-Tutorial >Python2.7 gibt verstümmelte chinesische Zeichen im Windows-Befehlsfenster aus

Python2.7 gibt verstümmelte chinesische Zeichen im Windows-Befehlsfenster aus

巴扎黑
巴扎黑Original
2017-06-23 16:01:193237Durchsuche

Das Beispiel in diesem Artikel beschreibt das Problem des verstümmelten Codes, der beim Ausführen von Python-Dateien im Windows-Befehlsfenster generiert wird. Als Referenz:
Ps: Bitte korrigieren Sie mich, wenn es Fehler gibt. Willkommen zum Austauschen und Lernen >

# -*- coding:utf-8 -*-str = "彦雪"print str
Nach der Ausführung lauten die Ausgabeergebnisse wie folgt:

褰﹂洩
Die Ergebnisse des verstümmelten Codes unterscheiden sich möglicherweise von anderen, aber sie sind alles verstümmelte Codes!!

Problemanalyse

Die Standardcodierung von Python2 ist „ASCII“, und die ASCII-Codierung enthält keine chinesischen Zeichen

Wenn chinesische Zeichen darin enthalten sind, wird das Der Python-Interpreter meldet im Allgemeinen einen Fehler.
Aber wenn UTF-8-Kodierung angegeben ist, meldet Python keinen Fehler mehr
"# -
- programming:utf-8 --" gibt an dass der Python-Quellcode in UTF-8 kodiert ist.

Die Standardkodierung von window ist die GBK-Kodierung, daher muss str vor der Ausgabe als GBK kodiert werden.

Da Python keine direkte Konvertierung von utf-8 in gbk zulässt, müssen Sie utf-8 zuerst in Unicode und dann in gbk konvertieren

Eingehende Analyse

Diese Methode hat Ein Nachteil besteht darin, dass Probleme auftreten, wenn wir plattformübergreifend arbeiten. Daher bietet uns Python eine praktische Lösung für die Verwendung von Unicode als Ausgabe. Diese Methode gilt nicht für raw_input

, wenn gedruckt werden muss Bei der Ausgabe ruft Python zunächst das Codierungsformat des Zeichenausgabeprogramms (Befehlszeile oder Ausgabefunktion) auf und codiert dann die Zeichenfolge in die vom Zeichenausgabeprogramm verwendete Codierung (sodass das Zeichenausgabeprogramm nicht angezeigt wird, weil dies der Fall ist). erkennt die Codierung nicht) Verstümmelte Zeichen), und dann gibt das Zeichenausgabeprogramm die codierten Zeichen an das Ziel aus.

Lösung

# 方法一  中文前加u, 告诉Python解释器后面的是个unicode编码str = u"彦雪"
# 方法二  str.decode('utf-8') 以utf-8编码对字符串 str 进行解码, 获取unicodestr = "彦雪".decode('utf-8')
# 方法三  unicode(str, 'utf-8') 将字符串 str 以utf-8编码解码, 获取unicodestr = unicode('彦雪','utf-8')
wird im Windows-Befehlsfenster angezeigt raw_input Verstümmelte Zeichen

Die Verwendung von raw_input erfordert die Konvertierung von Chinesisch in die Systemkodierung. Die Methode ist wie folgt

# 方法1  str.encode("gbk") 将unicode转为gbk 编码content = raw_input(u"输入内容: ".encode("gbk"))
# 方法2content = raw_input("输入内容: ".decode('utf-8').encode("gbk"))
# 方法3content = raw_input(unicode('输入内容: ','utf-8').encode("gbk"))

Obwohl diese Schreibmethode sehr praktisch ist, empfehle ich persönlich nicht, chinesische Schriftzeichen und raw_input zu verwenden der Zweck, in derselben Zeile zu sein

Erweiterte Lektüre

Python-Codierungshinweise# -

- programming:utf-8 --

PEP 263 – Definieren von Python-Quellcode-Kodierungen

Einige Recherchen zu Python-Kodierung, verstümmelten Zeichen und Unicode

raw_input-Eingabe, Dateilesen, Variablenvergleich und andere Probleme bei der Konvertierung von str, unicode, utf-8

Erkundung

Während ich warte, werde ich mit Ihnen die Probleme teilen, auf die ich zuvor oft gestoßen bin, und hoffe, dass es für alle hilfreich ist. Korrekturen sind willkommen

Finden Sie sich im Wissensaustausch wieder und genießen Sie die Freude am Programmieren

Das obige ist der detaillierte Inhalt vonPython2.7 gibt verstümmelte chinesische Zeichen im Windows-Befehlsfenster aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn