我正在浏览 djangobook,在其中一个示例中作者写道:
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
'%s %s' 前面的 "u" 是否将字符串转换为 unicode?
它并没有完全将字符串“转换”为 unicode,它代表一个 unicode 字符串。引用文档
在 Python 源代码中,Unicode 文字被编写为前缀为“u”或“U”字符的字符串......理想情况下,您希望能够以您的语言的自然编码编写文字。然后,您可以使用您喜欢的编辑器编辑 Python 源代码,该编辑器将自然地显示重音字符,并在运行时使用正确的字符。
是的,该u
前缀意味着该字符串是 Unicode。还有一件事要知道 - 您应该声明源代码编码,以便 Python 知道如何处理字符串:
http://docs.python.org/howto/unicode.html#unicode-literals-in-python-source-code
操作员将%
使用给定字符串作为格式创建一个新字符串。由于您使用了前导u
,因此该字符串将是 Unicode。每个都%s
将导致参数在插入新字符串之前也被转换为 Unicode。