2011-07-16 69 views
0

我想了解python中的編碼內容,我想我幾乎管理它來理解。因此,這裏是一些代碼,我會解釋,我想請你來驗證我的想法:)Python:關於編碼的問題

text = line.decode(encoding) 
print "type(text) = %s" % type(text) 
iso_8859_1 = text.encode('latin1') 
print "type(iso_8859_1) = %s" % type(iso_8859_1) 
unicodeStr = text.encode('utf-8') 
print "type(unicodeStr) = %s" % type(unicodeStr) 

所以第一線

text = line.decode(encoding) 

不變換編碼「編碼」給出一個給定的字符串轉換成Python的unicode文本格式。因此,輸出

type(text) = <type 'unicode'> 

所以,現在,我用原文從我在UTF-8編碼風格文件和我的代碼「文本」的其餘部分是UTF-8文本。

現在我想轉換(爲什麼有理由)utf-8文本轉換成一些其他的東西,例如latin1由「text.encode('latin1')」完成。我的代碼在這種情況下,輸出是

type(iso_8859_1) = <type 'str'> 
type(unicodeStr) = <type 'str'> 

現在,這仍然是我的唯一問題是:爲什麼是後兩種情況下「STR」的類型,而不是「latin1的」或「統一」。這就是我還不清楚的地方。

後面的字符串「iso_8859_1」和「unicodeStr」是不是用「latin1」或「unicode」resprectivly編碼的?

回答

1

首先,utf8!= unicode。
str基本上是一個字節序列,編碼是解釋這些序列的方法,而unicode是unicode。
Joel在這個問題上有很棒的帖子http://www.joelonsoftware.com/articles/Unicode.html

+1

在閱讀鏈接的文章之後,你應該知道足夠多的知道剩下的內容。開始接受並提升幫助你的人。 – wberry

+0

感謝您的鏈接。我現在完全明白髮生了什麼事! – toom