2011-01-21 99 views
2

我想看看不同的字符串會是什麼樣子在不同的編碼gbk的......編碼字符串在Python

例如:

>>> str1 = "asdf" 
>>> str1.encode('utf-16') 
'\xff\xfea\x00s\x00d\x00f\x00' 
>>> str1.encode('base64') 
'YXNkZg==\n' 

而這些都讓我我想要的。

但我想看看某些字符串在gbk,gb2312或gb18030中的樣子。

>>> str1.encode('gbk') 
'asdf' 
>>> str1.encode('gb2312') 
'asdf' 
>>> str1.encode('gb18030') 
'asdf' 

輸出不應該是'asdf'以外的東西嗎?

我有蟒蛇2.7,我可以看到gbk.py和lib中的其他文件/編碼

我在想,如果我看到在輸出沒有變化,因爲這些字母將顯示在該編碼相同,或者因爲我需要以某種方式啓用這些編碼(需要某種導入?)...

回答

2

只要使用字節值0-127,這些編碼就相當於ASCII。 UTF-8也是如此。要真正看到差異,請嘗試使用一些真正的中文。

1

Wikipedia page:

的字符被編碼爲1個或2 字節。 00-7F範圍內的一個字節是一個 單字節,這意味着與在ASCII中一樣的東西 。嚴格來說,在此範圍內有96個字符和 32個控制碼。

所以不,你的ASCII字符測試字符串不應該編碼爲不同的東西(至少不是GBK,我沒有檢查品種)。