以下是应引发UnicodeEncodeError
异常的语句:
print 'str+{}'.format(u'unicode:\u2019')
在Python Shell中,异常按预期引发:
>>> print 'str+{}'.format(u'unicode:\u2019')
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
print 'str+{}'.format(u'unicode:\u2019')
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 8: ordinal not in range(128)
但是,如果我将该行放在
settings.py
的开头并从Aptana Studio启动Django服务器,则不会引发错误,并且会打印以下行:str+unicode:’
但是,如果我从外壳执行
manage.py runserver
,则会引发异常:UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 8: ordinal not in range(128)
是否有某种Python设置可以静默抑制这些unicode错误?
直接从Aptana Studio启动Django测试服务器时,如何防止unicode错误被忽略?
使用
Python 2.7.3
Aptana Studio 3.3.2
最佳答案
如果您只是将字节串转换为unicode,例如
print unicode(s)
或在示例中的字符串格式化操作中混合使用unicode和字节串,Python将退回到系统默认编码(除非更改,否则为
ascii
),并且隐式尝试使用编解码器。当前活动的系统默认编码可以与
import sys
sys.getdefaultencoding()
现在看来,Aptana Studio实际上确实与您的解释器的默认编码混淆了:
从blog post by Mikko Ohtamaa:
[...]看起来像是PyDev(Eclipse Python插件)。的
干扰源代码是
here。
看起来原因是与Eclipse控制台合作。然而
它做错了。无需设置控制台编码,
编码设置为整个Python运行时环境,混乱了
完成开发的目标运行时。
有可能解决此问题。在Eclipse Run…对话框设置中,可以在Common选项卡上选择Console Encoding。那里
是可能的值US-ASCII。我不确定Python 2的想法
“ US-ASCII”编码名称,因为默认值为“ ascii”。
因此,请确保将默认值重置为
ascii
,并且应该很好。关于python - 从Aptana Studio PyDev运行时取消抑制UnicodeEncodeError异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25250857/