0

我正在浏览 djangobook,在其中一个示例中作者写道:

def __unicode__(self):
      return u'%s %s' % (self.first_name, self.last_name)

'%s %s' 前面的 "u" 是否将字符串转换为 unicode?

4

3 回答 3

3

它并没有完全将字符串“转换”为 unicode,它代表一个 unicode 字符串。引用文档

在 Python 源代码中,Unicode 文字被编写为前缀为“u”或“U”字符的字符串......理想情况下,您希望能够以您的语言的自然编码编写文字。然后,您可以使用您喜欢的编辑器编辑 Python 源代码,该编辑器将自然地显示重音字符,并在运行时使用正确的字符。

于 2012-06-28T17:36:16.247 回答
1

是的,该u前缀意味着该字符串是 Unicode。还有一件事要知道 - 您应该声明源代码编码,以便 Python 知道如何处理字符串:

http://docs.python.org/howto/unicode.html#unicode-literals-in-python-source-code

定义Python源代码编码的正确方法

于 2012-06-28T17:39:02.217 回答
1

操作员将%使用给定字符串作为格式创建一个新字符串。由于您使用了前导u,因此该字符串将是 Unicode。每个都%s将导致参数在插入新字符串之前也被转换为 Unicode。

于 2012-06-28T17:39:42.263 回答