我在几天前仔细阅读了关于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 就不存在了。
有人可以给我一些见解吗?
答案 0 :(得分:1)
因为我可以直接使用任何unicode字符[...]
声明变量
但那不是你做过的。它们可能看起来像字符,但它们在源文件中被编码为字节。如果您尝试对值实际执行任何有用的操作,例如切片,下标,取长度,然后一切都坏了。 那是“Unicode痛苦”。
>>> '中文'[1]
'\xb8'