在我的Python 2.6脚本的开头,我想写下我的名字,因为它是拼写的,即“Joël”(带有trema on e)。所以我写__author__ = u'Joël'
,我可以通过一个简单的print __author__
检索它。help()with unicode __author__ string
问题似乎与内置help()
功能,因为我得到一个错误信息:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xeb' in position 2: ordinal not in range(128)
我不能升级到Python 3.x的,我觉得这个功能非常有用(这将肯定是为那些谁将得到我的脚本)。我也没有忘记将文件编码为UTF-8,并通过将该脚本中的指定它:
# -*- coding: utf-8 -*-
在哪里这是来自任何想法?
在此先感谢您的答案。
编辑 展望“深入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'
输入字符串,我得到一个正确的输出通过帮助()调用。
问题是,我很确定这会在其他电脑上打破。任何想法如何我可以处理这个?
当然可以。用一个自定义的'__str __()'方法替换它。 – 2011-06-16 14:29:23
我只是想试试这个,但是我不知道在这个'__str __()'方法里面放什么东西。我的意思是,在这里进行一些编码转换,例如为了消除重音,看起来就像从一开始就写出没有口音的名字一样,因为任何'print'都会调用它。或者,我应该看到如何根据调用函数来更改输出......不确定这是否合法。 – 2011-06-16 14:58:22
@Ignacio无论如何它都需要一个字节串。而'sys.getdefaultencoding'无用地说''ascii''。 – 2011-06-16 15:02:44