2011-06-28 181 views
24

如果我給你的unicode原始文字到一個變量,我可以讀取它的值:如何解碼unicode原始文字爲可讀的字符串?

>>> s = u'\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e' 
>>> s 
u'\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e' 
>>> print s 
Сообщение отправлено 

但是,當我已經分配的值到平原,沒有unicode字符串,我不能:

>>> s = '\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e' 
>>> s 
'\\u0421\\u043e\\u043e\\u0431\\u0449\\u0435\\u043d\\u0438\\u0435 \\u043e\\u0442\\u043f\\u0440\\u0430\\u0432\\u043b\\u0435\\u043d\\u043e' 
>>> print s 
\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e 

我如何解碼並閱讀它?

回答

31

使用unicode_escape codec

s.decode('unicode_escape') 
+3

(原因是'\ uXXXX'在非Unicode字符串文字中是* verbatim *。) – 2011-06-28 16:08:35

+0

找到了有史以來最適合俄文字符的最佳解決方案 –

0

如果您解碼嘗試以下

print repr(s).decode('unicode-escape').encode('latin-1') // or encode using some other encoding 

這可能是蟒蛇終端使用的是默認的ASCII時,並有符號,它超出越來越怪異結果範圍。

相關問題