1

数千の text/html ファイルを含む CMS があります。ユーザーがさまざまな文字エンコーディング (utf-8、utf-8 w BOM、windows 1252、iso-8859-1) を使用して text/html ファイルをアップロードしていることが判明しました。

これらのファイルが読み込まれ、応答に書き込まれると、CMS のフレームワークは、応答の content-type 属性に charset=UTF-8 を強制します。

このため、UTF-8 以外のコンテンツは、文字化けした文字 (「ネイティブ」文字エンコーディングから UTF-8 への正しい文字変換がない場合、?、黒いひし形など) でユーザーに表示されます。また、これらのドキュメントには、文字セットを示すメタデータが添付されていません。私の知る限り、それらがどの文字セットであるかを知る唯一の方法は、テキスト レンダリング アプリ (Firefox、Notepadd++ など) でそれらを見て、「 」 コンテンツで、「見た目」が正しいかどうかを確認します。

不明なエンコーディングのファイルを自動的に/インテリジェントに UTF-8 に変換する方法を知っている人はいますか? これは統計モデリングで達成できると読んだことがありますが、それは私の頭の上にあるものです。

問題への最善のアプローチ方法についての考えは?

ありがとう

4

3 に答える 3

3

ICU4J を使用できますCharsetDetector

于 2010-03-16T17:46:24.230 に答える
1

UTF-8 としてデコードしてみてください。これが失敗した場合は を探し、\x92見つかった場合は CP1252 としてデコードします。それ以外の場合は、Latin-1 としてデコードします。

于 2010-03-16T17:35:28.400 に答える
0

一般的に、言う方法はありません。バイト シーケンス 63 61 66 C3 A9 は、windows-1252 の "café"、IBM437 の "caf├⌐"、または UTF-8 の "café" と同様に有効です。ただし、統計的には後者の可能性が高くなります。

統計的方法を扱いたくない場合、UTF-8 のように見えるものはすべてそうであり、それ以外は windows-1252 にあると仮定することが、多くの場合有効なアプローチです。

または、UTF-16 の可能性がある場合は、ファイルの先頭で FE FF または FF FE を探します。

于 2010-03-17T14:01:02.863 に答える