如果我在python中这样做:
>>> name = "âțâîâ"
>>> name
'\xc3\xa2\xc8\x9b\xc3\xa2\xc3\xae\xc3\xa2'
>>> len(name)
10
>>> u = name.decode('utf-8')
>>> len (u)
5
>>>
如果你没有指定任何内容,python中的默认编码是什么?
答案 0 :(得分:2)
您正在指定一个python字符串文字,它们的编码由编辑器的默认设置决定(或者在您的终端的python解释器的情况下)。 Python在这方面没有发言权。
默认情况下,python 2尝试将源代码解释为ASCII。在python 3中,这已经切换到UTF-8。
请阅读Python Unicode HOWTO以进一步了解Unicode与输入和输出编码之间的区别。你真的也应该阅读Joel Spolksy的article on Unicode。
答案 1 :(得分:1)
可能你使用的是Python 2.(如果没有,这个答案很糟糕。)
以下是:
>>> name = "âțâîâ"
您为name
分配一个(字节)字符串,其内容由您对终端的编码决定。您的文本编辑器。在你的情况下,这显然是UTF8。
这些字节用
显示>>> name
'\xc3\xa2\xc8\x9b\xc3\xa2\xc3\xae\xc3\xa2'
仅当您使用
解码时>>> u = name.decode('utf-8')
你得到一个unicode字符串。在这里指定编码。
更简单,更可靠的方法是直接执行
u = u"âțâîâ"
然后才根据您想要的编码提取字节:
name = u.encode("utf-8")