csv ファイルを読み込んで、表示させたら文字化けしてた

ので、色々やってみて分かったことをメモ。

Dim file As String = "hoge.csv"
Dim hoge As String() = System.IO.File.ReadAllLines(file, System.Text.Encoding.Default)

第2引数を指定すれば、OK!
csv ファイルの文字コードShift_JISUTF-8 (BOM 付き) であれば、これでよかった。
でも、euc, UTF-8 (BOM 無し) はダメだった。
正しく表示させるには、

Dim file As String = "hoge.csv"
'euc
Dim hoge As String() = System.IO.File.ReadAllLines(file, System.Text.Encoding.GetEncoding(51932))
'UTF-8
Dim fuga As String() = System.IO.File.ReadAllLines(file, System.Text.Encoding.UTF8)

とそれぞれの文字コード毎に指定しないといけない。
まず、読み込むファイルの文字コードを判別しないといけないってことかぁ〜。
調べたら、.NET Framework では文字コードを判別する方法が用意されていないらしい。
文字コードを判別する - .NET Tips (VB.NET,C#...)

結論

文字コードの判別は大変だ。