2012-01-15 93 views
4

我有一個表格的數據: v = "\xc5\x84"打印UTF-8編碼的字節串

這是一個UTF-8編碼的字符「n」的一個字節表示。

如何打印>> 012 < <使用變量v?

我使用python 2.7.2

在原始變量v包含的字符串:

v = "\\xc5\\x84"(雙反斜槓)

VS

v = "\xc5\x84"(單反斜槓)

這本身就是有效的UTF-8字符。

回答

7

編輯在我的機器中,輸出取決於所使用的shell/python,如下所示。
正如克勞斯所評論的,這裏的主要演員將是系統中的區域設置。

>>> v = "\xc5\x84" 

>>> print v #in pycrust shell python 2.6 
Å„ 
>>> 

>>> print (v) #in idle python 3.2 
Å 
>>> 

該機具有以下設置:

>>> import locale 
>>> locale.getlocale() 
('es_ES', 'cp1252') 

此設置無關,你會得到你的性格與

>>> print v.decode('utf-8') 
ń 
>>> 
+1

+1這是最好的工作機會。如果正在使用的shell是Windows中的命令提示符窗口(又名'cmd.exe'),它將無法在美國和西歐等地區使用(編碼爲「cp437」或「cp850」),應該在中央歐洲語言環境,編碼爲'cp852'。 – 2012-01-15 22:12:34

-2

嗯,你不需要做什麼特別的事情。 ..這只是print v

>>> v = "\xc5\x84" 
>>> print v 
ń 
+0

答案是python解釋器的依賴。 B'coz當我打印v時,輸出是'ää'。我正在使用python 2.6 – RanRag 2012-01-15 21:39:41

+1

我無法在Python 2.6(pycrust)和python 3.2(空閒)中直接正確打印。你能評論你的答案嗎? – joaquin 2012-01-15 21:41:25

+0

@joaquin也許...我使用python 2.7.2就像OP一樣,但它也適用於python 2.6中的我。可能與外殼有關?我的語言環境設置爲UTF-8('LC_CTYPE =「UTF-8」') – 2012-01-15 21:44:18