0

Python を使用して別のエンコーディングで Web 応答を受信して​​います。期待される出力は、Web ページで指定されたものと同じでなければなりません。

例:マーク・バルベ

最後の文字は、html 応答の解析後も同じままである必要があります。

現在、私はこれに次のコードを使用しています

unicode.join(u'\n',map(unicode,item))

特別なエンコーディングが指定されていない場合、次のエラーがスローされることがあります: 例: Markus Rygaard、Alberte Blichfeldt、Flemming Quist、Møller

Traceback (most recent call last):
  File "BFICrawl.py", line 20, in <module>
    print attrName + " : " + attrValue
  File "C:\Python27\LIB\encodings\cp437.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\xf8' in position 6
0: character maps to <undefined>

私は本当に同じ理由を見つけることができません。Web から同じエンコード コンテンツを取得する別の方法はありますか。

4

2 に答える 2

1

コードページ 437 (エンコードされている) は文字を認識しないøため、文字列を出力用にエンコードできません。エラーメッセージはこれをすべて言います。

問題は、なぜ文字列を DOS コンソール ウィンドウで使用されるコードページにエンコードしようとしているのかということです。

于 2012-04-27T21:33:48.547 に答える
1

unicodeWeb からオブジェクトを正常に取得しました。のようなことをする必要はありませんunicode.join(u'\n',map(unicode,item))。ユニコードを出力しようとすると問題が発生します。

Windows の「コマンド プロンプト」ウィンドウでスクリプトを実行しています。スクリプトはコンソールに出力しています。コンソールのエンコードはcp437. これは非常に制限された (8 ビット) エンコーディングです。Møllerの 2 番目の文字、およびその他の膨大な数の文字を処理できません。

対処法: スクリプトを IDLE (Python に付属) またはその他の IDE で実行します。

print fooまたは、デバッグ目的でのみコンソールに出力する場合は、使用する代わりにprint repr(foo)

于 2012-04-27T22:21:12.397 に答える