私はbeautifulSoupを使ってISO-8859-1エンコーディングのページを擦っていますが、ちょっとした問題にぶち当たっています。ページを掻き取ろうとするとエンコードの問題が発生する
私は読み込みラインがあります。
logging.info("Processing [%s]" % (link))
を変数link
がbeautifulsoupから掻き取り値のいずれかですが。これはUnicode文字列で、print link
と入力すると印刷できます。それはそれが掻き取った正確な方法コンソール上に表示されますが、上記の行は、このエラーがスローされます。
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 14: ordinal not in range(128)
今はUnicodeの上に読んだけど、それを印刷することができる理由を私は理解できませんそれを記録することはできません。
booba-concert-à-bercy
任意のアイデア私はこれをいじくるよどこに:
問題の文字列は、このですか?
ありがとうございます。
こんにちはイグナシオ。それは私にとってはうまくいかなかった。私はまだ同じエラーが発生します。私の環境についてこれを引き起こす可能性のある他の設定がありますか?ありがとう。 –
Windowsのターミナルエンコーディングと思われる 'cp850'に文字列をエンコードするとうまくいきますが、あなたの例のエンコーディングを' utf-8'に指定したにもかかわらず、それでもエンコーディングしようとしたのでしょうかASCIIに。 –
私は 'Python/Lib/site-packages'ディレクトリに' sitecustomize.py'というファイルを追加することでこれを解決しました。このファイルには 'import sys'と' sys.setdefaultencoding( 'utf-8') 'の2行が含まれています。それ以前のデフォルトのエンコーディングは 'ascii'であり、したがって問題です。これでデフォルトのエンコーディング、つまり 'utf-8'を使用し、それをそれに変換するので、' link'変数の明示的なエンコーディングを指定する必要はありません。これは問題の良い解決策ですか?もちろん、私は、同じエンコーディングの端末まで文字を正しく見ないでしょうが、それは私のコードを壊さないでしょう。 –