运行bbedi编码时出错

2024-04-23 07:01:25 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题让我困惑了很久。我使用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字符时如何表现?在

谢谢, 乔恩


Tags: 文件代码命令行终端编辑进程ascii环境变量
2条回答

如果BBEdit依赖于外部文件和/或重定向来实现这一点,那么就没有办法解决它了。修复它需要插入一些内部Python结构,以便告诉它在编码输出时使用UTF-8。在

在其他人不太可能遇到这种情况的情况下,这里有一个我一无所知的python传说:

BBedit的好人帮我澄清了这一点。在

具体的问题,似乎是由bbedit中的一个运行时条件引起的,他们还没有追踪到,但有以下解决方法:

Python知道一个特殊的脚本网站自定义.py““

如果你把下面的文字网站自定义.py在

import sys
sys.setdefaultencoding('utf-8')

进入这个文件

/Path/To/Python/Installation/site-packages/

然后,当bbedit生成一个python进程时,python“site”模块会自动调用sys.setdefaultencoding()然后在为会话设置了默认编码(这是一个奇怪的位)之后,从sys命名空间中删除setdefaultencoding。参见:

http://docs.python.org/library/sys.html#sys.setdefaultencoding

相关问题 更多 >