Python中的Unicode字符串语法

4

官方 Python 教程 表示,Python 中的 Unicode 字符串可以像这样使用:

u'Hello World !'

但是,当我将它放到Python 3.2的GUI环境IDLE中时,它会给出一个语法错误。另外,俄文和中文文本可以成功地存储在Python字符串中,因此我猜它们已经是Unicode编码了。

您能解释一下发生了什么吗?


4
由于您正在使用Python 3.2版本,建议您使用官方Python 3.2教程:http://docs.python.org/3.2/tutorial/。 - Eric O. Lebigot
2个回答

7

默认情况下,Python 3.2 使用 Unicode 字符串,因此不再需要使用 u

如果您想对字符串进行编码和解码,则应使用:

encoded = "unicodestring".encode("UTF8")

decoded = s.decode("UTF8")

Python文档指出:

Python 3.0使用文本和(二进制)数据的概念,而不是Unicode字符串和8位字符串。所有文本都是Unicode;但编码的Unicode被表示为二进制数据。用于保存文本的类型是str

并且

您不能再使用u“…”字面量来表示Unicode文本。但是,您必须使用b“…”字面量来表示二进制数据。


3
在Python3.3及以上版本中,unicode文字再次被认可,详见Python 3.3的更新内容

新增语法特性:

引入新的yield from表达式用于生成器委托。
对于str对象,u'unicode'语法再次被接受。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接