.NetFrameworkにて UTF-8N(ボムなし)の文字列の読み書き

最近知ったんですが
文字コード,UTF-8で書かれるファイルには,実は2種類あるそうで


UTF-8文字列じゃ!と確実に認識させるためにマーカー(BOM:ボム)をファイル先頭に置くケースがあったり
置かないケースがあったり...

    ボムを置くファイルをUTF-8
    ボムを置かないファイルをUTF-8N
と,言うそうな

C#で,StreamReader,StreamWriterのサンプルは,ほとんど,ボムありのファイルを生成しますです
今回,ボム無しのファイルを作る必要があったので,ちょろっと書き起こしてみました

何のことは無い

System.Text.UTF8Encodingクラスのインスタンス生成時に

    false=ボムなし指定
を渡して作ればいいそうで

サンプル,書いておきますです

//書き込み
System.Text.UTF8Encoding u = new UTF8Encoding(false);

System.IO.StreamWriter sw = new System.IO.StreamWriter(@"c:¥hoge.txt", false, u);
sw.WriteLine("てすとほげほげ");

sw.Close();



//読み込み
System.Text.UTF8Encoding u = new UTF8Encoding(false);

System.IO.StreamReader sr = new System.IO.StreamReader(@"c:¥hoge.txt", u);
string st = sr.ReadLine();
sr.Close();
なお,ボムコードは 0xEF 0xBB 0xBFの3バイトだそうです

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください