У меня вопрос о unicodes и форматировании строки% в python. У меня есть следующие четыре случая:Как форматирование строки% в python работает с юникодами?
случай:
# -*- encoding: utf -*- print '%s' % 'München'
случай:
# -*- encoding: utf -*- print '%s' % u'München'
случай:
# -*- encoding: utf -*- print u'%s' % u'München'
случай:
# -*- encoding: utf -*- print u'%s' % 'München'
Случаи 1-3 работают отлично, но в случае 4 я получаю ошибку:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
Так что мои вопросы: почему случаи 1-3 работы (особенно случай 2) и почему случай 4 терпит неудачу?
Я знаю, как исправить свою проблему, но я хочу понять, почему эта проблема происходит, поэтому я был бы счастлив, если бы кто-то мог мне помочь. Благодаря!
PS: Спасибо за ссылки на возможные дубликаты, но, к сожалению, мои проблемы не решены Why does Python 2.x throw an exception with string formatting + unicode?, потому что в этом случае они не используют unicode для формируемой строки. Таким образом, они делают случаи 1 и 2, но не 4, и особенно случай 2 действительно работает для меня и ломается для них ...
Возможно, обман: http://stackoverflow.com/questions/22537722/why-does-python-2-x-throw-an-exception-with-string-formatting-unicode?rq=1 – akkatracker
Возможный дубликат [Почему Python 2.x генерирует исключение с форматированием строки + unicode?] (Http://stackoverflow.com/questions/22537722/why-does-python-2-x-throw-an-exception-with-string- форматирование-юникод) – Sayse