エンコーディング(ASCIIまたはUnicode)がわからないテキストファイルを読むにはどうすればよいですか?C++でエンコーディングが不明なテキストファイルを読む
エンコードを自動検出するクラスがありますか?
エンコーディング(ASCIIまたはUnicode)がわからないテキストファイルを読むにはどうすればよいですか?C++でエンコーディングが不明なテキストファイルを読む
エンコードを自動検出するクラスがありますか?
私はここで否定的な答えしか出せません:ファイルのエンコーディングを決定する普遍的な正しい方法はありません。 ASCIIファイルは、ASCIIがサブセットであるため、ISO-8859-15エンコーディングとして読み取ることができます。他のファイルについては、さらに悪いことに、両方で異なる意味を持つ2つの異なるエンコーディングで有効である可能性があります。したがって、他の手段でこの情報を入手する必要があります。多くの場合、すべてがUTF8であると仮定するのは良いアプローチです。 * NIX環境で作業している場合は、LC_CTYPE変数が役立ちます。エンコーディングを気にしない場合(たとえば、コンテンツを変更または処理しない場合)、ファイルをバイナリとして開くことができます。行う方法(ブルートフォース)の
多くの場合、エンコーディングがわかっていても(十分に短い)スニペットが入っている言語を伝えることさえできません:) –
一つは
:最少のバイト
リファレンスを生成コーディング。しかし、それは完全な証明ではないことを教えてください。
これは理論的にはここに答えの本質的な部分を含め、参考にするためのリンクを提供することが望ましいでしょう(http://meta.stackexchange.com/q/8259)。 –
ありがとうございました。私はそれに応じて答えを編集しました。 – krammer
これは一般的なケースでは不可能です。ファイルに正確に を入力している場合は、ASCII、UTF-8、または ISO 8859のいずれかと同じように有効です。いくつかのヒューリスティックしかし 、推測として使用することができる。
'\0', other, '\0', other
UTF16BE other, '\0', other, '\0'
UTF16LE '\0', '\0', '\0', other
UTF32BE :彼らは0'` \ ' `含まれている場合は、次の パターンに応じて、UTF-16またはUTF-32のいくつかのフォームを扱う おそらくですother, '\0', '\0', '\0'
UTF32RLE しかし、私が言ったように、100%確実ではありません。
(PS。どのように私はここにテーブルをフォーマットします。ポイント2内のテキストをHTMLテーブル として宣言されているが、それは1として表示されていないようです。
あなたはどのようなテキストエディタを使用しています? – Swiss
テキストエディタではなく、C++クラスを使用しています –
@angela:これは信頼性の高い方法ではありませんエンコーディングはそのデータをどのように解釈するかを指示しますコンピュータが特定の解釈が正しいかどうかを –