使用unicode作者字符串的help()

2024-10-01 11:30:38 发布

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

在Python2.6脚本的开头,我想把我的名字按拼写写出来,即“Joël”(trema on e)。所以我写__author__ = u'Joël',我可以通过一个简单的print __author__来检索它。在

当我收到错误消息时,内置的help()函数出现问题:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xeb' in position 2: ordinal not in range(128)

我不能升级到python3.x,我发现这个函数非常有用(对于那些将得到我的脚本的人来说,它肯定是有用的)。我还没有忘记用UTF-8编码文件,并通过添加以下内容在脚本中指定:

^{pr2}$

你知道这是从哪里来的吗?在

提前感谢您的回答。在


编辑 再看一看“深入Python”一书,我发现了如何在我的机器上有一个正确的呈现,请参见http://www.diveintopython.org/xml_processing/unicode.html。在

我的想法是,Python的默认编码是ASCII,这确实阻止了help()生成正确的输出。我所做的是在{pythondir}\Lib\site-packages中添加一个名为sitecustomize.py的脚本,设置默认编码:

import sys
sys.setdefaultencoding('iso-8859-1')

现在,有了一个类似u'Joël'的输入字符串,我通过调用help()得到了一个正确的输出。在

问题是,我很确定这会在别人的电脑上坏掉。你知道我怎么处理吗?在


Tags: 函数in脚本消息编码on错误sys
2条回答

Pydoc明确希望将作者名转换为ascii:

  File "/usr/local/Cellar/python/2.7.1/lib/python2.7/pydoc.py", line 1111, in docmodule
    result = result + self.section('AUTHOR', str(object.__author__))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xeb' in position 2: ordinal not in range(128)

你不太可能解决这个问题。在

您需要使用简单字符串,而不是Unicode字符串。因此:

__author__ = 'Joël'

然后,内置的帮助方法将显示:

^{pr2}$

编辑:如果这不起作用,则可以通过执行以下操作强制返回名称的8位字符串版本:

 __author__ = u'Joël'.encode('utf-8')

相关问题 更多 >