-1

デンマーク語のテキスト ファイルからデータを読み込みました。しかし、私はそれをデコードする方法を見つけることができないようです. 元のテキストは「dør」ですが、生のテキスト ファイルでは「d√∏r」として保存されます。

だから私は明白なことを試しました

InputData = "d√∏r"
Print InputData.decode('iso-8859-1')

悲しいことに、次のエラーが発生します。

UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-6: ordinal not in range(128)

UTF-8 でも同じエラーが発生します。(Python 2.6.5 を使用)

印刷されたメッセージが「dør」になるように、このテキストをデコードするにはどうすればよいですか?

4

1 に答える 1

0

C3 B8"ø" の UTF-8 エンコーディングです。UTF-8 エンコーディングでファイルを読み取る必要があります。

import codecs
codecs.open(myfile, encoding='utf-8')

を取得している理由は、テキストを出力UnicodeEncodeErrorしようとしていて、Python が端末のエンコーディングを認識していないため、デフォルトで. この問題を解決するには、使用するか、環境変数を使用します。asciisys.stdout = codecs.getwriter('utf8')(sys.stdout)PYTHONIOENCODING="utf-8"

unicodeこれにより、テキストがオブジェクトとして提供されることに注意してください。プログラムの他のすべてがそうである場合、str互換性の問題が発生します。すべてを に変換するunicodeか、(おそらくより簡単に) を使用してファイルを Latin-1 に再エンコードしますustr.encode('iso-8859-1')が、Latin-1 コードページの外側に何かがあると、これが壊れることに注意してください。strプログラムを内部でutf-8エンコードに使用するように変換する方が簡単な場合があります。

于 2012-07-10T13:33:50.357 に答える