这是一个让我困惑很久的问题。我使用bbedit来编辑python代码。据我了解,从编辑器中运行代码,会产生自己的python进程,运行代码并将输出写入日志文件。所以bbedit不知道环境变量等。如果我在终端的命令行试试这个:编码错误从bbedit运行python
>>> s = 'háček'
>>> print s
háček
找到并且很好。但是,如果我在的BBEdit以下文件:
#!/opt/local/bin/python
# -*- coding: utf-8 -*- #
s = u'háček'
print s
,并尝试在编辑器中运行它,我得到:
UnicodeEncodeError:“ASCII”编解码器不能在1-2位字符进行编码:序数不在范围内(128)
,所以我必须这样做:
print s.encode('utf-8')
任何人都熟悉的BBEdit能照我这是怎么回事?有没有办法告诉编辑如何在存在unicode字符的情况下行事?
感谢, 乔恩
只是一个注释:'sys.setdefaultencoding'已经从Python 3中删除。我遇到了类似的问题,罪魁祸首竟然是地区。 'locale.getpreferredencoding()'返回US-ASCII,导致一些头疼的文件IO。在我的〜/ .bash_profile中显式设置LANG修复了它。 – robjwells 2013-09-13 16:37:26