Есть ли разница между оператором `%` -format и `str.format ()` в Python относительно кодировки Unicode и utf-8?

Предположим, что

n = u"Tübingen"
repr(n) # `T\xfcbingen` # Unicode
i = 1 # integer

Первый из следующих файлов выдает

UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 82: ordinal not in range(128)

Когда я выполняю n.encode ('utf8') , это работает.

Второй работает безупречно в обоих случаях.

# Python File 1
#
#!/usr/bin/env python -B
# encoding: utf-8

print '{id}, {name}'.format(id=i, name=n)

# Python File 2
#
#!/usr/bin/env python -B
# encoding: utf-8

print '%i, %s'% (i, n)

Поскольку в документации рекомендуется использовать format () вместо оператора формата % , я не понимаю, почему format () кажется более "инвалиды". format () работает только со строками utf8 ?

7
задан Tom van der Woerdt 22 December 2011 в 11:38
поделиться