在我的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