2

我想看看不同的字符串在不同的编码中会是什么样子......

例如:

>>> 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”以外的东西吗?

我有 python 2.7,我可以在 lib/encodings 中看到 gbk.py 和其他文件

我想知道我是否看到输出没有变化,因为这些字母在该编码中会显示相同,或者因为我需要以某种方式启用这些编码的使用(需要某种导入?)...

4

2 回答 2

2

只要只使用字节值 0-127,这些编码就等同于 ASCII。UTF-8 也是如此。要真正看到差异,请尝试使用一些实际的中文。

于 2011-01-21T16:55:04.707 回答
1

维基百科页面:

一个字符被编码为 1 或 2 个字节。00-7F 范围内的字节是一个单字节,其含义与 ASCII 中的含义相同。严格来说,在这个范围内有96个字符和32个控制码。

所以不,您的 ASCII 字符测试字符串不应该编码为不同的东西(至少对于 GBK 来说不是,我没有检查品种)。

于 2011-01-21T16:56:31.240 回答