【发布时间】:2017-02-15 00:38:22
【问题描述】:
我有一个关于 unicode 和 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 确实对我有用,对他们来说中断了……
【问题讨论】:
标签: python string unicode formatting