help()与unicode __author__字符串

Joë*_*oël 5 python author character-encoding pydoc

在我的Python 2.6脚本的开头,我想写下我的名字拼写,即"Joël"(与e上的trema).所以我写了__author__ = u'Joël',我可以通过一个简单的方法来检索它print __author__.

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

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

我无法升级到Python 3.x,我发现这个功能非常有用(而且肯定会是那些将获得我的脚本的人).我也没有忘记用UTF-8编码文件,并通过添加以下内容在脚本中指定它:

# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)

有什么想法来自何处?

提前感谢您的回答.


编辑再次查看"Dive Into Python"一书,我发现如何在我的机器上进行正确的渲染,请参阅http://www.diveintopython.org/xml_processing/unicode.html.

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

import sys
sys.setdefaultencoding('iso-8859-1')
Run Code Online (Sandbox Code Playgroud)

现在,使用类似的输入字符串u'Joël',通过调用help()得到正确的输出.

问题是,我很确定这会破坏其他人的计算机.知道怎么处理这个吗?

Jos*_*Lee 1

Pydoc 明确想要将作者姓名转换为 ascii:

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

您不太可能解决这个问题。

\n