Python 2.6でのスクリプトの冒頭で、スペルどおりの名前、つまり「Joël」(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)
Python 3.xにアップグレードできません。この関数は非常に便利です(そして、私のスクリプトを入手する人にとってはきっと役立つでしょう)。また、ファイルをUTF-8でエンコードし、次を追加してスクリプトで指定することも忘れませんでした。
# -*- coding: utf-8 -*-
これがどこから来るのかについて何か考えはありますか?
よろしくお願いします。
編集「DiveIntoPython」の本をもう一度見て、自分のマシンで正しいレンダリングを行う方法を見つけました。http://www.diveintopython.org/xml_processing/unicode.htmlを参照してください。
アイデアは、PythonのデフォルトのエンコーディングはASCIIであり、これによりhelp()が正しい出力を行うことができなかったということです。私がしたことは、デフォルトのエンコーディングを設定して、のsitecustomize.py
ような名前のスクリプトを追加することです。{pythondir}\Lib\site-packages
import sys
sys.setdefaultencoding('iso-8859-1')
そして今、のようu'Joël'
に書かれた入力文字列で、help()の呼び出しを通して正しい出力を取得します。
問題は、これが他のコンピュータで壊れるだろうと確信していることです。これをどのように処理できるか考えてみてください。