5

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()の呼び出しを通して正しい出力を取得します。

問題は、これが他のコンピュータで壊れるだろうと確信していることです。これをどのように処理できるか考えてみてください。

4

2 に答える 2

1

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)

これを回避できる可能性は低いです。

于 2011-06-16T14:22:57.200 に答える
1

Unicode 文字列ではなく、単純な文字列を使用する必要があります。したがって:

__author__ = 'Joël'

次に、組み込みのヘルプ メソッドによって次のように表示されます。

AUTHOR
    Joël

編集:これが機能しない場合は、次のようにして、名前の 8 ビット文字列バージョンを強制的に返すことができます。

 __author__ = u'Joël'.encode('utf-8')
于 2011-06-16T14:27:32.943 に答える