質問

私のプログラムを読み込ファイルを使用する様々なエンコーディング.その場合は、ANSI、UTF-8またはUTF-16(大少しエンディアン).

時にBOM付き(バイト順マークが、私は問題ありません。知っている場合、ファイルはUTF-8またはUTF-16れます。

たいと思ったとがありませんでしたBOMのファイルにはANSI.いましたが、ファイルの私に対しばしば不自BOM.そのためなBOMがそのファイルにはANSI、UTF-8UTF-16れます。

ファイルがないBOMこのスキャンのファイルも正確に推定のエンコーディング?持ってき方など、さすがだなと私rightを100%に近のポートされていないファイルにはANSIに高90の場合はUTF形式です。

なんと、通常一般のアルゴリズムを。でも実際の利用デ2009年を知っているUnicode、TEncodingクラスで、何か特定する事が大切です。


回答:

ShreevatsaRの回答につながってい検索にGoogleのための"ユニバーサルエンコード検出器のデー"に驚いたのはここに記載#1の位置の後に自分が生きているのみで約45分!では迅速googlebotting!!も驚Stackoverflowが1位ことを楽しみにしています。

第2回エントリをGoogleたのブログによるフレッドEakerに 文字エンコーディングの検出 を記載したアルゴリズムに様々な言語で対応します。

私たちとインターネットで提供このページを手がかりを直進 無料OpenSource ChsDet文字セットを検出器でSourceForge 記述ントに基づきMozillaのi18nます。

素晴らしいですね!ございます""または""とお答えの方(+1)おShreevatsaR、本当にありがとうございまStackoverflow、支援、ティーチング-アシスタントの私の回答を以下のセンチメートルのボールになる。

役に立ちましたか?

解決

かきになるかも知れない"というにPythonスクリプトを使用する Chardet:ユニバーサルエンコード検出器.でreimplementationの文字エンコーディングを検出で使用しているものFirefoxを使うことにより、 多くの各種アプリケーション.有用なリンク: Mozillaのコード, 研究論文 を行いましたが(皮肉なことに、私のFirefoxが正しく検出するエンコードのページ) 短い説明, 詳細説明.

他のヒント

ここでメモ帳はありませんどのようにする

のどのことができます。

のpythonユニバーサルエンコーディング検出器チェックます。

私の推測では:

  • 最初に、チェックの場合はファイルのバイト値未満32以外のタブ/改行).またはできませんANSIまたはUTF-8です。このように-UTF-16です。してのendianness.このすべく一部のテーブルの有効なUnicode文字コードです。悩んでいるときには無効なコードしては、その他のendiannessる場合。いずれかfit(はな)、チェックが占める割合が大きいの英数字コードです。このような試みsearchung改行を決定endiannessっています。そしてアイデアの確認方法のためのendianness.
  • の場合はファイルを含まない値未満32(かい空白文字)、ANSIまたはUTF-8です。みの構文解析ではUTF-8として見た場合も無効なUnicode文字です。ただしその場合は、そのうANSI.
  • が予想される場合は書類以外の英語のシングルバイトまたはマルチバイトUnicodeエンコーディングしい出ができます。レストランのお食事できないようにInternet Explorerをヒストグラムの文字の値と比較してヒストグラムの知られます。しかしばしばがに失敗していることがあります。いて大図書館の文字のヒストグラムを各言語です。

ASCII?いいえ現代のOSは、任意のより多くのASCIIを使用していません。彼らはすべて、少なくとも8ビットコード、それはUTF-8のどちらかだという意味、ISOLatinX、WinLatinX、MacRomanの、または任意の他そこにあるシフトJISを使用します。

私が知っている唯一のテストは、無効なUTF-8文字をチェックするためです。もしあるなら、あなたはそれがUTF-8にすることはできません知っています。同じことは、UTF-16のために、おそらく可能です。それはUnicodeのセットませんときしかし、それがであるかもしれないWindowsコードページ伝えるのは難しいでしょう。

私は、ユーザーがすべての可能なエンコーディングのリストからデフォルトを選択させることにより、これに対処知ってます。

ほとんどの編集者

コードはUTFの文字の妥当性をチェックするためにそこにあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top