テキストファイルのエンコーディングスキーマを検出できるメソッドを作成しようとしています。世の中にはたくさんあることは知っていますが、私のテキストファイルが、、、またはのいずれかASCII
であることは確かです。私はこれらの3つを検出する必要があるだけです。誰かがこれを行う方法を知っていますか?UTF-8
UTF-16
2 に答える
4
まず、ファイルをバイナリモードで開き、メモリに読み込みます。
UTF-8(またはASCII)の場合は、検証チェックを実行します。を使用してテキストをデコードしEncoding.GetEncoding("UTF-8", EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback).GetString(bytes)
、例外をキャッチできます。取得しない場合、データは有効なUTF-8です。コードは次のとおりです。
private bool detectUTF8Encoding(string filename)
{
byte[] bytes = File.ReadAllBytes(filename);
try {
Encoding.GetEncoding("UTF-8", EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback).GetString(bytes);
return true;
} catch {
return false;
}
}
UTF-16の場合は、BOM(FE FF
またはFF FE
、バイト順序に応じて)を確認します。
于 2012-05-09T19:21:45.537 に答える
1
StreamReaderを使用してエンコーディングを識別します。
例:
using(var r = new StreamReader(filename, Encoding.Default))
{
richtextBox1.Text = r.ReadToEnd();
var encoding = r.CurrentEncoding;
}
于 2012-05-09T19:11:40.060 に答える