私はdjangobookを調べていますが、例の1つで、作成者は次のように書いています。
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
'%s%s'の前の "u"は文字列をユニコードに変換しますか?
文字列をユニコードに「変換」するのではなく、ユニコード文字列を表します。ドキュメントを引用するには
Pythonソースコードでは、Unicodeリテラルは「u」または「U」文字のプレフィックスが付いた文字列として記述されます...理想的には、言語の自然なエンコーディングでリテラルを記述できるようにする必要があります。次に、アクセント付き文字を自然に表示し、実行時に適切な文字を使用するお気に入りのエディターを使用して、Pythonソースコードを編集できます。
はい、そのu
プレフィックスは文字列がUnicodeであることを意味します。知っておくべきことがもう1つあります。Pythonが文字列の処理方法を認識できるように、ソースコードのエンコーディングを宣言する必要があります。
http://docs.python.org/howto/unicode.html#unicode-literals-in-python-source-code
演算子は%
、指定された文字列を形式として使用して新しい文字列を作成します。先頭を使用しているため、u
この文字列はUnicodeになります。それぞれ%s
が、新しい文字列に挿入される前に、引数もUnicodeに変換されます。