C#/asp.net で次のことを行う最善の方法は何ですか? - ファイルが確実に UTF8 であるかどうかを検出します。- 入力ストリームまたはディスク上のファイルのみをプログラムで UTF8 に変換します。
乾杯アスカー
ストリームが UTF8 かどうかを確認するには、http: //utf8checker.codeplex.com/を参照してください。
それを変換するには、StreamReader を使用できます。
new StreamReader(stream, Encoding.UTF8))
実際、このコンストラクターを使用すると、以前のチェックが妨げられ、そのまま使用できます。
MSDN:
文字エンコーディングは encoding パラメータによって設定され、バッファ サイズは 1024 バイトに設定されます。StreamReader オブジェクトは、ストリームの最初の 3 バイトを調べてエンコードを検出しようとします。ファイルが適切なバイト オーダー マークで始まる場合、UTF-8、リトル エンディアン Unicode、およびビッグ エンディアン Unicode テキストを自動的に認識します。それ以外の場合は、ユーザー提供のエンコーディングが使用されます。詳細については、Encoding.GetPreamble メソッドを参照してください。
リトル エンディアン Unicode とビッグ エンディアン Unicode を検出したくない場合は、次のコンストラクターを呼び出します。
new StreamReader(stream, Encoding.UTF8, false))
はfalse
エンコーディング検出をオフにするため、この呼び出しは常に UTF 8 を使用してファイルをエンコードします。