5

UTFファイルにはエンコーディングを決定するためのBOMがあることは知っていますが、そのエンコーディングを推測する方法がわからない他のエンコーディングはどうですか。

私は新しい Java プログラマーです。UTF BOM を使用して UTF エンコーディングを推測するためのコードを作成しました。しかし、他のエンコーディングに問題があります。どうやってそれらを推測しますか。

誰でも私を助けることができますか?前もって感謝します。

4

3 に答える 3

4

この質問は、以前のいくつか の質問と重複しています。エンコーディングを推測しようとする Java 用のライブラリが少なくとも 2 つあります (ただし、100% 正しく推測する方法はないことに注意してください)。

もちろん、エンコーディングが 3 つまたは 4 つのオプションの 1 つに過ぎないことがわかっている場合は、より正確な推測アルゴリズムを作成できる可能性があります。

于 2010-07-09T12:44:40.293 に答える
0

簡単な答えは次のとおりです。

UTF-8 でも、BOM は完全にオプションであり、多くのアプリでは BOM を適切に処理せず、印刷可能な文字として表示するだけなので、使用しないことをお勧めします。バイト オーダー マーカーの本来の目的は、UTF-16 ファイルのエンディアンを示すことでした。

とはいえ、Unicode を処理するほとんどのアプリは、ある種の推測アルゴリズムを実装しています。ファイルの先頭を読み、特定の署名を探します。

于 2010-07-09T10:27:25.453 に答える
0

エンコーディングがわからず、インジケータ (BOM など) がない場合、エンコーディングを正確に「推測」できるとは限りません。ヒントを与えることができるいくつかのポインターが存在します。

たとえば、ISO-8859-1 ファイルには (通常) 0x00 文字はありませんが、UTF-16 ファイルにはそれらの文字が含まれています。

最も一般的な解決策は、エンコーディングを検出できない場合、ユーザーにエンコーディングを選択させることです。

于 2010-07-09T10:28:48.193 に答える