私は、UTF-8でエンコードされたhtmlファイルを解析するためにBeautifulSoupを試しています。しかし、残念なことに、このhtmlファイルにはutf-8以外の文字が含まれているため正しく表示されません。しかし、私はこれらの文字を単にスキップすることができるので、これは私にとっては問題ありません。utf-8エンコードhtmlファイルにutf-8以外の文字が含まれているとどうなりますか?
の問題は、私が直接UTF-8としてencodingFromを指定した場合でも、次のとおりです。
soup = BeautifulSoup (html,fromEncoding='utf-8')
それはsoup.originalEncodingが自動的にWindows-1252をデフォルトに設定されているが判明しました。
print soup.originalEncoding
windows-1252
私はBeautifulSoupのドキュメントを参照し、のように書かれています:私ではなく、リスト内の最後の1に落ちるの指定fromEncodingを使用する必要がありそうです
Beautiful Soup tries the following encodings, in order of priority, to turn your document into Unicode:
- An encoding you pass in as the fromEncoding argument to the soup
constructor.
- An encoding discovered in the document itself
- An encoding sniffed by looking at the first few bytes of the file. If
an encoding is detected at this stage, it will be one of the UTF-*
encodings, EBCDIC, or ASCII.
- An encoding sniffed by the chardet library, if you have it installed.
- UTF-8
- Windows-1252
。
参考のためthe original html I'm parsingです。
@joelgoldstick、私は意図的なエンコーディングは、(htmlのヘッダー部分から)utf-8にする必要があります。しかし、このファイルには、utf-8エンコーディングではない文字が含まれている可能性があります(ただし、おそらくwindows-1252)。それが理由かもしれません。しかし、私はutf-8の部分を取得し、windows-1252の部分を省略することを好むでしょう。 –