我正在浏览djangobook并在其中一个例子中写道:
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
" u"在'%s%s'前面把字符串变成unicode? p>
答案 0 :(得分:3)
它不会将字符串“转”为unicode,它代表一个unicode字符串。引用documentation
在Python源代码中,Unicode文字被写为字符串 带有'u'或'U'字符的前缀 ... 理想情况下,您希望能够使用您的语言的自然编码来编写文字。那你可以 使用您喜欢的编辑器编辑Python源代码 自然的重音字符,并使用正确的字符 在运行时。
答案 1 :(得分:1)
是的,u
前缀表示该字符串是Unicode。还有一件事需要知道 - 您应该声明源代码编码,以便Python知道如何处理字符串:
http://docs.python.org/howto/unicode.html#unicode-literals-in-python-source-code
答案 2 :(得分:1)
%
运算符将使用给定字符串作为格式创建新字符串。由于您使用了前导u
,因此该字符串将为Unicode。每个%s
都会导致参数在插入新字符串之前转换为Unicode。