2011-01-21 121 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,我没有检查品种)。