在Python中将字符串编码为GBK

2 投票
2 回答
6347 浏览
提问于 2025-04-16 10:23

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

比如说:

>>> 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也是如此。要真正看到它们的区别,可以试着用一些实际的中文字符。

撰写回答