在Python中将字符串编码为GBK
我想看看不同的字符串在不同编码下会是什么样子的...
比如说:
>>> 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 和其他文件。
我在想,输出没有变化是因为那些字母在这种编码下显示是一样的,还是因为我需要以某种方式启用这些编码(需要什么导入吗?)...
2 个回答
1
来自维基百科的内容:
一个字符可以用1个或2个字节来表示。字节的范围是00到7F,这个范围内的字节和ASCII编码中的含义是一样的。严格来说,这个范围内有96个字符和32个控制代码。
所以,不,你的测试字符串如果是ASCII字符,应该不会被编码成其他东西(至少在GBK编码下是这样的,我没有检查其他的编码方式)。
2
只要使用的字节值在0到127之间,这些编码就和ASCII是一样的。UTF-8也是如此。要真正看到它们的区别,可以试着用一些实际的中文字符。