我看到Python 手册提到.encode()
了.decode()
字符串方法。在 Python CLI 上玩耍,我发现我可以创建u'hello'
具有与“常规”字符串不同的数据类型的 unicode 字符串,'hello'
并且可以使用str()
. 但真正的问题始于使用 ASCII 127 以上的字符u'שלום'
,我很难凭经验确定到底发生了什么。
堆栈 溢出充满 了关于混淆的例子 的 unicode 和 字符串编码/解码 处理。
str()
使用该方法对字符串进行编码和解码时,尤其是当字符串中包含无法用 7 个字节表示的字符时,究竟会发生什么(字节如何更改,以及数据类型如何更改) ?看起来,具有数据类型的 Python 变量<type 'str'>
可以被编码和解码,这是真的吗?如果它是编码的,我理解这意味着该字符串由 UTF-8、ISO-8859-1 或其他编码表示,这是正确的吗?如果它被解码,这是什么意思?解码的字符串是 unicode 吗?如果是这样,那么为什么他们没有数据类型<type 'unicode'>
?
为了那些稍后将阅读本文的人的兴趣,我认为 Python 2 和 Python 3 都应该得到解决。谢谢!