テキストファイルのエンコード/コードページを検出するにはどうすればいいですか? 質問する

テキストファイルのエンコード/コードページを検出するにはどうすればいいですか? 質問する

.txt私たちのアプリケーションでは、さまざまなソースからテキスト ファイル ( 、など)を受け取ります.csv。これらのファイルを読み取ると、ファイルが異なる/不明なコード ページで作成されたために、ゴミが含まれることがあります。

テキスト ファイルのコード ページを (自動的に) 検出する方法はありますか?

detectEncodingFromByteOrderMarksコンストラクタの は、StreamReaderやその他の Unicode マーク付きファイルでは機能しますが、 、UTF8などのコード ページを検出する方法を探していますibm850windows1252


ご回答ありがとうございます。これが私が行ったことです。

私たちが受け取るファイルはエンドユーザーからのものですが、彼らはコードページについて何も知りません。受信者もエンドユーザーであり、コードページについて知っていることはこれだけです。コードページは存在し、煩わしいものです。

解決:

  • 受信したファイルをメモ帳で開き、文字化けしたテキストを見てください。誰かが François とか何かの名前を持っている場合、人間の知能でこれを推測できます。
  • ユーザーがファイルを開いて、正しいコードページが使用されている場合にファイル内に表示されることがわかっているテキストを入力できる小さなアプリを作成しました。
  • すべてのコードページをループし、ユーザーが指定したテキストでソリューションを提供するコードページを表示します。
  • 複数のコードページがポップアップ表示される場合は、ユーザーにさらにテキストを指定するように求めます。

ベストアンサー1

コードページは検出できないので、教えてもらう必要があります。バイトを分析して推測することはできますが、奇妙な (時には面白い) 結果になることがあります。今は見つけられませんが、メモ帳を騙して英語のテキストを中国語で表示することはできるはずです。

とにかく、これを読む必要があります:すべてのソフトウェア開発者が Unicode と文字セットについて絶対に知っておく必要がある最低限の知識 (言い訳はなし!)

具体的には、ジョエルはこう言います。

エンコーディングに関する最も重要な事実

私が今説明したことをすべて忘れてしまったとしても、非常に重要な事実を 1 つ思い出してください。文字列がどのエンコードを使用しているかがわからないまま文字列を持つことは意味がありません。もはや、現実を無視して「プレーン」テキストが ASCII であるかのように装うことはできません。プレーン テキストなど存在しないのです。

メモリ内、ファイル内、または電子メール メッセージ内に文字列がある場合、その文字列がどのようなエンコードで使用されているかを知っておく必要があります。そうしないと、文字列を正しく解釈したり、ユーザーに表示したりすることができません。

おすすめ記事