文字エンコード混乱の問題を修正

文字エンコード混乱の問題を修正

文字エンコーディングが破損したWebサイトから一部のデータを抽出するスクリプトを作成しています。

  • htmlヘッダーはiso-8859-1と主張しますが、そうではありません。
  • wgetファイルを調べると、実際にはutf-8ですが、間違った文字があることを示しています。
  • リバースエンジニアリングにより、誰かがWindowsコードページ1252をUnicodeコードとして使用したことがわかります。

たとえば、バックティックはコードページ1252では0x91、このページではU + 0091です。奇妙な。驚くべきことに、Webブラウザはこの問題を自動的に解決できるようです。

私の質問:この混乱をきれいにするのにどのようなツールが役に立ちますか? (手で作成したものではありません。このウェブサイトは数百ページの動的ウェブサイトであり、少なくとも6つ以上の異なる誤ったエンコードを見ました。)

ベストアンサー1

「手でしない」が意味するものに応じて、iconv作業に役立ちます。

iconv - ある文字エンコーディングから別の文字エンコーディングへのテキスト変換

オプション

   -f from-encoding, --from-code=from-encoding
          Use from-encoding for input characters.

   -t to-encoding, --to-code=to-encoding
          Use to-encoding for output characters.

私の経験によれば、誤ったエンコーディングを処理する必要がある場合でも、iconvはうまく機能します。たとえば、入力データがISO-8859の場合でも、UTF-8でエンコードされたことをiconvに指示して、iconvが入力がUTF-8のように動作するようにすることができます。これにより、誤ってエンコードされたデータを修正できます。

iconvはフィルタとして使用できるため、同じものと一緒に使用できます。 Link withはcurl使用時にもwget機能します--output-document -

私が知っている限り、iconvは正しい入力エンコーディングを検出/推測できません。ただし、入力データがどれほど汚れているかに応じて、サイトにさまざまな種類のエラー/混合エンコードがある場合、これは「不可能」になる可能性があります。サイト全体が同じように混乱している場合は、それを修正できます。

おすすめ記事