2017-01-20 3 views
0

Ich habe eine Liste, die wie folgt aussieht:Python Unicode kodieren nicht zeigt lesbaren Text

myList = [u'\u0442\u043e\u0432\u0447', u'\u0442\u043e\u0432\u0447'] 

Dann habe ich dies:

for x in myList: 
    print (x.encode('utf-8')) 

so bekam ich:

'\xd1\x82\xd0\xbe\xd0\xb2\xd1\x87' 
'\xd1\x82\xd0\xbe\xd0\xb2\xd1\x87' 

I versuchte viele Kodierungs- und Dekodierungsstandards. Keiner von ihnen hat mir geholfen. Wie kann ich lesbaren Text bekommen?

Antwort

0

Ihre Saiten sind bereits Unicode (sie beginnen mit u', die \u.... Teile sind Unicode-Codepoints welche Python wandelt in ein Unicode-Objekt für Sie), so dass Sie sie nicht kodieren müssen (nur Sie kodieren str).

Sie brauchen nur sie drucken:

myList = [u'\u0442\u043e\u0432\u0447', u'\u0442\u043e\u0432\u0447'] 
for x in myList: 
    print(x) 

Sie können den Zeichensatz Ihres Terminals mit export LC_ALL=utf-8 angeben müssen, wenn Sie auf Probleme stoßen, während x Druck

0

Ihre Zeichenfolgen sind eine Folge von Codepunkten. Jeder Codepunkt ist ein festes Symbol. Um es in Bytes umzuwandeln, benutze encode und gib es mit encoding (normalerweise utf-8). Um Symbole aus Bytes (d. H. Datei auf einem Datenträger) zu erhalten, müssen Sie sie entschlüsseln (Sie sollten die Codierung im Voraus kennen).

Verwenden print ' '.join([str(i) for i in myList])