首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从bbedit中运行python时出现编码错误

从bbedit中运行python时出现编码错误
EN

Stack Overflow用户
提问于 2011-05-13 00:53:21
回答 2查看 598关注 0票数 2

这是一个困扰我很长时间的问题。我使用bbedit来编辑python代码。据我所知,从编辑器中运行代码会产生自己的python进程,运行代码,并将输出写入日志文件。所以bbedit不知道环境变量之类的东西。如果我在终端的命令行中尝试这样做:

代码语言:javascript
复制
>>> s = 'háček'
>>> print s
háček

find and good。但如果我在bbedit中有以下文件:

代码语言:javascript
复制
#!/opt/local/bin/python
# -*- coding: utf-8 -*- # 

s = u'háček'
print s

并尝试从我得到的编辑器中运行它:

UnicodeEncodeError: ascii编解码器无法对位置1-2中的字符进行编码:序数不在范围内(128)

所以我必须这样做:

代码语言:javascript
复制
print s.encode('utf-8')

熟悉bbedit的人能给我解释一下这里发生了什么吗?有没有一种方法可以告诉编辑器在出现unicode字符时应该如何操作?

谢谢,乔恩

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-30 00:36:15

在其他人不太可能遇到这种情况的情况下,这里有一个我一无所知的奇怪的python知识角落:

BBedit的好心人为我澄清了这一点。

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

Python知道一个名为"sitecustomize.py“的特殊脚本

如果将以下文本放入sitecustomize.py

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2011-05-13 01:01:39

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5981570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档