为什么python需要unicode类型,因为我可以直接用任何unicode字符声明一个变量?

时间:2017-08-17 06:40:07

标签: python python-unicode

我在几天前仔细阅读了关于unicode痛苦的文章,并在几个小时前问了这个问题:

Do I have to encode unicode variable before write to file?

但最近我脑子里浮现出一个奇怪的问题。

我发现这些代码运行良好:

chinese = ['中文', '你好']  # py2, these are bytes, type is str
with open('filename', 'wb') as f:
    f.writelines(chinese)

因为我可以直接用py2和py3中的任何unicode字符声明变量,所以python(或我们)得到的是什么? unicode type ?我们不能在整个程序中使用str(py2)和bytes(py3)类型吗?然后所谓的 unicode pain 就不存在了。

有人可以给我一些见解吗?

1 个答案:

答案 0 :(得分:1)

  

因为我可以直接使用任何unicode字符[...]

声明变量

但那不是你做过的。它们可能看起来像字符,但它们在源文件中被编码为字节。如果您尝试对值实际执行任何有用的操作,例如切片,下标,取长度,然后一切都坏了。 是“Unicode痛苦”。

>>> '中文'[1]
'\xb8'
相关问题