python中用于存储Unicode字符串的默认表示形式是什么?

时间:2012-09-12 08:25:57

标签: python unicode

如果我在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中的默认编码是什么?

2 个答案:

答案 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")