以下はSHIFT JISのファイルを読み込んでSに代入しています。このSの値はSHIFT JISのままなのでしょうか?それともUNICODEなのでしょうか?
'"C:\test.txt"をShift-JISコードとして開く
Dim sr As New System.IO.StreamReader("C:\test.txt", _
System.Text.Encoding.GetEncoding(932))
'内容をすべて読み込む
Dim s As String = sr.ReadToEnd()
'閉じる
sr.Close()
'結果を出力する
Console.WriteLine(s)
文字コードを気にする必要性が出るのは、「文字列 → バイト配列」と「バイト配列 → 文字列」を処理したい場合で、読み込んだ後にできあがった文字列については普通は意識する必要はありません。
例で言うと、バイト配列で記録されているファイルを読み込んで文字列にするときと、文字列をバイト配列に変換してファイルに書き込むときにそれぞれ文字コードを考える必要が出てきます。
C とか使ってるとたまにあるのですが、文字列 A が Shift_JIS 、文字列 B が EUC-JP とかだったりすると面倒なことになりますよね。ですから .NET Framework では、内部では特定のエンコーディングを使ってすべて管理しているはずです。
#最近の言語は多言語に対応するために内部で Unicode を使ってるのが多いです。
コメント(2件)
読み込み⇒処理⇒書き出し という一連の処理で文字コードを意識する場面は、書き出し時のコードセットを指定する場合くらいでしょう。
Len関数やらの文字列操作系関数では、それぞれちゃんと仕様が決まっていますから、特に内部処理形式を考える必要は無いと思いますよ。
http://msdn2.microsoft.com/ja-jp/library/system.string.aspx
Unicodeだと書いてある