Unicode und 'decode ()' in Python

8
%Vor%

b und c sind alle Unicode, aber >>> b outputs u'\u6211' und >>> c outputs u'\xce\xd2' , warum?

    
Tanky Woo 23.04.2012, 08:35
quelle

2 Antworten

12

Wenn Sie "我" eingeben, erhält der Python-Interpreter vom Terminal eine Darstellung dieses Zeichens in Ihrem lokalen Zeichensatz, die wegen der "" in einer byteweisen Zeichenfolge gespeichert wird. Auf meinem UTF-8-System ist das '\xe6\x88\x91' . Bei dir ist es '\xce\xd2' , weil du GB2312 benutzt. Das erklärt den Wert Ihrer Variablen a .

Wenn Sie u"我" eingeben, weiß der Python-Interpreter nicht, in welcher Kodierung sich das -Zeichen befindet. Er entspricht in etwa der normalen Zeichenfolge: Er speichert die Bytes des Zeichens in a Unicode-String, interpretiert jedes Byte als Unicode-Codepunkt, daher das falsche Ergebnis u'\xce\xd2' (oder, auf meiner Box, u'\xe6\x88\x91' ).

Dieses Problem existiert nur im interaktiven Interpreter. Wenn Sie Python-Skripte oder -Module schreiben, können Sie die Codierung ganz oben und Unicode angeben Saiten werden richtig herauskommen. Z. B. druckt folgendes auf meinem System zweimal das Wort liberté :

%Vor%     
Fred Foo 23.04.2012, 09:05
quelle
0

Das interaktive Python zeigt Darstellung eines Objekts, wenn Sie einfach seinen Namen eingeben. Auf der anderen Seite versucht der Befehl print das Zeichen zu rendern. Ihre Variable mit dem Namen a ist vom Typ string. Tatsächlich sind Strings in Python 2.x eine Reihe von Bytes. Es hängt also von Ihrer Arbeitsumgebung ab. Sie sagen zu der Funktion unicode (), dass Sie jetzt die Kodierung gb2312 verwenden. Wenn dies der Fall ist, enthält b die korrekte Darstellung des Zeichens in der angegebenen Codierung.

Versuchen Sie

%Vor%

in Ihrem Fall. Es ist wahrscheinlich, dass Sie das gewünschte Ergebnis sehen werden. Versuchen Sie auch:

%Vor%

Die Darstellung ist (wenn möglich) eine Textzeichenfolge, die beim Kopieren in einen Quellcode das Objekt mit demselben Wert erstellt.

Sieh dir Mark Pilgrims "Dive Into Python 3", Kapitel 4. Strings ( Ссылка ) an , lesbare Erklärungen.

    
pepr 23.04.2012 10:19
quelle

Tags und Links