Предположим, что
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
?