2012-06-28 4 views
0

Я иду через djangobook и в одном из примеров автор пишет об этом:Указание на строку unicode?

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

ли «и» в передней части «% S% S» превратить строку в юникод?

ответ

3

Он не совсем «превращает» строку в юникод, она представляет строку unicode. Цитирую documentation

В Python исходный код, литералы Unicode записываются как строки с префиксом характера «U» или «U» ... В идеале, вы хотите, чтобы иметь возможность написать литералов в естественном кодировании вашего языка. Затем вы могли бы исправить исходный код Python с помощью вашего любимого редактора, который бы отображал символы с акцентом естественно и имел правильные символы во время выполнения.

1

Да, этот префикс u означает, что строка является Unicode. Существует еще одна вещь, чтобы знать - вы должны объявить кодировку исходного кода, так что Python знает, как обращаться со строкой:

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

Correct way to define Python source code encoding

1

Оператор % создаст новую строку, используя заданная строка как формат. Поскольку вы использовали ведущую u, эта строка будет Unicode. Каждый %s приведет к тому, что аргумент будет преобразован в Unicode, а также до того, как он будет вставлен в новую строку.

Смежные вопросы