<p>很可能您的<code>locale</code>和/或环境已损坏,未安装,未设置或设置为<code>C</code>。Python使用区域设置在stdout上应用正确的编码器。这允许将unicode编码为适当的编码。在</p>
<p>如果从命令行运行Python,请确保您的语言环境是健康的。键入<code>locale</code>,您将看到如下内容:</p>
<pre><code> $ locale
LANG=en_GB.UTF-8
LANGUAGE=
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
$
</code></pre>
<p>如果您看到错误消息或者LANG=C或类似的消息,Python将使用ASCII编码器,它拒绝非ASCII字符。在</p>
<p>要查找系统上安装的区域设置,请键入<code>locale -a</code>。选择适当的语言环境,最好是以“UTF-8”结尾的语言环境,并相应地设置<code>LANG</code>。E、 g</p>
^{pr2}$
<p>再次运行<code>locale</code>,并检查错误。如果仍然出现错误,则需要研究如何为发行版重新构建区域设置。在</p>
<p>如果在IDE中运行或无法修复,则可以成功地将以下环境变量添加到shell或IDE运行配置中:</p>
<pre><code>export PYTHONIOENCODING=utf-8
</code></pre>
<p>这告诉Python忽略区域设置并对stdout应用UTF-8编码器。在</p>
<p>通过使用Python中的<code>locale</code>模块,可以验证Python正在为区域设置使用什么。我的健康区域设置返回:</p>
<pre><code>>>> import locale
>>> locale.getdefaultlocale()
('en_GB', 'UTF-8')
>>> locale.getpreferredencoding()
'UTF-8'
</code></pre>
<p>不正常的区域设置将为<code>locale.getpreferredencoding()</code>返回<code>US-ASCII</code></p>