業務用のプログラムで文字化けが発生しましたので、色々テストしてみました。
UTF8を指定して出力ファイルを作成したのに、SJISを指定してファイル内容をプログラムで抽出しても文字化けが発生しないことは悩みました。
ファイル作成のコードは以下の通りです。
...(略)...
sw = New StreamWriter(tbOutput.Text, False, Encoding.GetEncoding("utf-8"))
...(略)...
sakuraエディターで出力ファイルを開いたら、「UTF8」ではなく、「UTF8 BOM付き」であることを気付きました。
コードを以下のように変更したらUTF8かつBOM無しのファイルを作成できました。
...(略)...
sw = New StreamWriter(tbOutput.Text, False, New UTF8Encoding(False))
...(略)...
変更後の出力ファイルを再度sakuraエディターで開いたら予想通り「UTF8」と表示されました。
BOM無しのファイルをSJISで開いたら、予想通り文字化けは発生しました!
テスト完了です!!!
※追記
テキストエディターで開いたら、BOM付きとBOM無しの内容は同じように見えますが、バイトで確認するとBOM付きのほうは3バイト多いことが分かります。