0

ファイルのエンコーディングを判断するのが難しいことは知っています。しかし、C++ でこの問題を解決する方法はありますか? Mbブーストはありますか(適切なものが見つかりませんでした)?.

ファイルのエンコーディングを特定し、その最初の行を適切なロケールの文字列として読み取る必要があります。

4

1 に答える 1

0

まともな解決策はないと思います。説明してみます。多かれ少なかれそれがファイルに含まれるべきであることがわかっている場合にのみ、エンコーディングを定義できます。次に、変換ファイルを別の方法で推測して、結果が期待どおりに見えるかどうかを確認できます。例として、ロシア語のエンコーディング テーブルを取り上げます。KOI-8、CP1251、CP866 などあらゆる種類のバリエーションがあり、これで終わりではありません =)。これらのエンコーディングはすべてロシア語の記号に対して異なるマッピングを持っているため、テキスト ファイルを取得して読むと、適切なデータではなく間違ったエンコーディングを考慮すると、単語/スペースと下位の ASCII テーブル部分はまったく問題なく表示されますが、まったく異なる文字から形成された単語が作成されます。 .

UTF8/16 などについては検出できませんが、入力ファイル内に不正なシーケンスが含まれていないことを確認できるため、特定のエンコーディングを使用して処理を試みることができます。

最良の選択肢は、最初に、検出する予定のエンコーディングのサブセットを定義し、特定の基準に基づいて検出アルゴリズムを設計しようとすることだと思います。

于 2013-04-20T20:08:00.813 に答える