詳細な観点から、ファイルの文字セットをどのように識別しますか? 私が見つけた情報の中には、ファイルのマジック ナンバーでチェックしているものもありましたが、他の記事はこれとはかけ離れていました。
さまざまな文字セット (ASCII/UTF8 など) でエンコードされたさまざまなファイルを開こうとしhexdump
ましたが、ファイルの文字セットに関するファイル識別子はありません。
詳細な観点から、ファイルの文字セットをどのように識別しますか? 私が見つけた情報の中には、ファイルのマジック ナンバーでチェックしているものもありましたが、他の記事はこれとはかけ離れていました。
さまざまな文字セット (ASCII/UTF8 など) でエンコードされたさまざまなファイルを開こうとしhexdump
ましたが、ファイルの文字セットに関するファイル識別子はありません。
いいえ。
UTF-8 準拠 (特殊なビット構文) をチェックするライブラリを作成し、言語と対応する文字エンコーディングを識別するために、言語ごとに最も頻繁に使用される 100 の単語を保持してみました。一般に、シングル バイト エンコーディング ISO-8859-* は、言語コンテンツから派生させることができます。
一般に、魔法のクッキーはありません。UTF はオプションの BOM を認識しており、これは UTF-16 (リトル エンディアン、ビッグ エンディアン) によく使用されます。
だから多分言語認識エンジンを検索してください。
すべてのエンコーディングに対してこれを確実に行う方法はなく、これに対するユニバーサル マジック ナンバーや識別子もありません。UTF-8 などの一部のエンコーディングではヒューリスティックを使用できますが、ほとんどの場合、エンコーディングを知っていれば十分です。