0

私はdjangobookを調べていますが、例の1つで、作成者は次のように書いています。

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

'%s%s'の前の "u"は文字列をユニコードに変換しますか?

4

3 に答える 3

3

文字列をユニコードに「変換」するのではなく、ユニコード文字列を表します。ドキュメントを引用するには

Pythonソースコードでは、Unicodeリテラルは「u」または「U」文字のプレフィックスが付いた文字列として記述されます...理想的には、言語の自然なエンコーディングでリテラルを記述できるようにする必要があります。次に、アクセント付き文字を自然に表示し、実行時に適切な文字を使用するお気に入りのエディターを使用して、Pythonソースコードを編集できます。

于 2012-06-28T17:36:16.247 に答える
1

はい、そのuプレフィックスは文字列がUnicodeであることを意味します。知っておくべきことがもう1つあります。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 に答える