Wenn Sie "我"
eingeben, erhält der Python-Interpreter vom Terminal eine Darstellung dieses Zeichens in Ihrem lokalen Zeichensatz, die aufgrund der ""
Byte-für-Byte in einer Zeichenfolge gespeichert wird. Auf meinem UTF-8-System ist das . Bei Ihnen ist es '\xce\xd2'
, weil Sie GB2312 verwenden. Das erklärt den Wert Ihrer Variablen a
.
Wenn Sie u"我"
eingeben, der Python-Interpreter nicht weiß, welche Codierung des 我
Charakter ist, was es tut, ist so ziemlich das gleiche wie für einen gewöhnlichen string:. Speichert er die Bytes des Zeichens in einem Unicode-String, interpretieren jedes Byte als Unicode-Codepunkt, daher das falsche Ergebnis u'\xce\xd2'
(oder, auf meiner Box, u'\xe6\x88\x91'
).
Dieses Problem besteht nur im interaktiven Interpreter. Wenn Sie Python-Skripte oder -Module schreiben, können Sie specify the encoding in der Nähe der Spitze und Unicode-Strings kommen richtig. Zum Beispiel auf meinem System, druckt das folgende das Wort liberté zweimal:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print(u"liberté")
print("liberté")
Welches Terminal verwenden Sie? Ich kann die Ergebnisse nicht auf meinem Unicode Gnome-Terminal reproduzieren ('c === u '\ u6211'') –
@ChrisMorgan Ich teste diese Codes in IDLE. –
kann dies auch mit IDLE repro –