<p>我正在尝试用unicode变量进行字符串格式化。例如:</p>
<pre><code>>>> x = u"Some text—with an emdash."
>>> x
u'Some text\u2014with an emdash.'
>>> print(x)
Some text—with an emdash.
>>> s = "{}".format(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in position 9: ordinal not in range(128)
>>> t = "%s" %x
>>> t
u'Some text\u2014with an emdash.'
>>> print(t)
Some text—with an emdash.
</code></pre>
<p>你可以看到我有一个unicode字符串,它打印得很好。问题是当我使用Python的新的(和改进的?)<code>format()</code>函数。如果我使用旧样式(使用<code>%s</code>),一切都很好,但是当我使用<code>{}</code>和<code>format()</code>函数时,它失败了。</p>
<p>你知道为什么会这样吗?我正在使用Python2.7.2。</p>