这个问题让我困惑了很久。我使用bbedit编辑python代码。据我所知,在编辑器中运行代码会产生自己的python进程,运行代码,并将输出写入日志文件。所以bbedit不知道环境变量之类的。如果我在终端的命令行中尝试以下操作:
>>> s = 'háček'
>>> print s
háček
找到好的。但如果我在bbedit中有以下文件:
^{pr2}$尝试在编辑器中运行它,我得到:
UnicodeEncodeError:“ascii”编解码器无法对位置1-2的字符进行编码:序号不在范围内(128)
所以我必须这样做:
print s.encode('utf-8')
熟悉bbedit的人能为我解释一下这里发生了什么吗?有没有一种方法可以告诉编辑器在存在unicode字符时如何表现?在
谢谢, 乔恩
如果BBEdit依赖于外部文件和/或重定向来实现这一点,那么就没有办法解决它了。修复它需要插入一些内部Python结构,以便告诉它在编码输出时使用UTF-8。在
在其他人不太可能遇到这种情况的情况下,这里有一个我一无所知的python传说:
BBedit的好人帮我澄清了这一点。在
具体的问题,似乎是由bbedit中的一个运行时条件引起的,他们还没有追踪到,但有以下解决方法:
Python知道一个特殊的脚本网站自定义.py““
如果你把下面的文字网站自定义.py在
进入这个文件
/Path/To/Python/Installation/site-packages/
然后,当bbedit生成一个python进程时,python“site”模块会自动调用sys.setdefaultencoding()然后在为会话设置了默认编码(这是一个奇怪的位)之后,从sys命名空间中删除setdefaultencoding。参见:
http://docs.python.org/library/sys.html#sys.setdefaultencoding
相关问题 更多 >
编程相关推荐