<p>不同的终端(和gui)允许不同的编码。我手头没有最新的ipython,但它显然能够处理字符串中的非ASCII <code>0xe7</code>字符(<code>'ç'</code>)。但是,您的普通控制台使用的是<code>'ascii'</code>编码(在异常中按名称提及),它不能显示任何大于<code>0x7f</code>的字节。在</p>
<p>如果要将非ASCII字符串打印到ASCII控制台,则必须决定如何处理它无法显示的字符。<code>str.encode</code>方法提供了几个选项:</p>
<blockquote>
<p><code>str.encode([encoding[, errors]])</code></p>
<p><code>errors</code> may be given to set a different error handling scheme.
The default for <code>errors</code> is <code>'strict'</code>, meaning that encoding errors raise a <a href="https://docs.python.org/2/library/exceptions.html#exceptions.UnicodeError" rel="nofollow noreferrer"><code>UnicodeError</code></a>.
Other possible values are <code>'ignore'</code>, <code>'replace'</code>, <code>'xmlcharrefreplace'</code>, <code>'backslashreplace'</code> and any other name registered via <a href="https://docs.python.org/2/library/codecs.html#codecs.register_error" rel="nofollow noreferrer"><code>codecs.register_error()</code></a>, see section <a href="https://docs.python.org/2/library/codecs.html#codec-base-classes" rel="nofollow noreferrer">Codec Base Classes</a>.</p>
</blockquote>
<p>下面是一个在字符串上使用这四个可选错误处理程序的示例(没有<code>TODO</code>添加的额外装饰):</p>
<pre><code>#!/usr/bin/env python2
# -*- coding: utf-8 -*-
from __future__ import print_function
uni = u'api servisleri için input check decorator gerekiyor'
handlers = ['ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace']
for handler in handlers:
print(handler + ':')
print(uni.encode('ascii', handler))
print()
</code></pre>
<p>输出:</p>
^{pr2}$
<p>这些输出中哪一个最接近你想要的是你自己决定。在</p>
<p>有关更多信息,请参见Python2“<a href="https://docs.python.org/2/howto/unicode.html" rel="nofollow noreferrer">Unicode HOWTO</a>”和Ned Batchelder的“<a href="http://nedbatchelder.com/text/unipain.html" rel="nofollow noreferrer">Pragmatic Unicode, or, How Do I Stop the Pain?</a>”,也可作为36分钟<a href="https://www.youtube.com/watch?v=sgHbC6udIqc" rel="nofollow noreferrer">video from PyCon US 2012</a>提供。在</p>
<p><strong>编辑</strong>:…或者,正如您所发现的,您的终端可以很好地显示Unicode,但是您的默认编码仍然设置为<code>'ascii'</code>,这比它需要的限制更严格。在</p>