• ベストアンサー

.NET 文字コードの変換

VB2008で文字列を他の文字コードにする方法が知りたいです。 何かしての部分がわかりません。 VB2005でも使えるものだったらうれしいです。 Dim str_sjis as string Dim str_euc as string = "パソコン" '例えばEUC-JP '''何かして str_sjisにシフトJISで文字列が入っている。 .Netの文字コードの変換の仕方がごちゃごちゃして分かりづらいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

EUC文字列のByte配列からEncodingのGetStringで変換すれば良いでしょう dim ss as String = System.Text.Encoding("EUC-JP").GetString(eucBytes) でUnicode文字列へ変換できると思います

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

文字セットの変換には Sysytem.Text.Encodingクラスを使います VB.NETの文字列は基本的にUnicodeです 1) 元の文字列変数から UnicodeのByte配列を取得 2) Byte配列から Sysytem.Text.Encoding.Convertを使って変換先のByte配列を作成 3) このバイト配列をファイル等に出力 といった手順です 2)の変換をする際に 元のエンコーディングオブジェクトと変換先のエンコーディングオブジェクトが必要になります 例 ' エンコーダを取得 EUC-JP or Unicode dim uniEnc as System.Text.Encoding = System.Text.Encoding.Unicode dim eucEnc as System.Text.Encoding = System.Text.Encoding.GetEncoding("EUC-JP") ' 元文字列をByte配列へ dim ss as String = "パソコン" dim uniBytes() as Byte = uniEnc.GetBytes( ss ) ' UnicedeのByte配列からEUC-JPのバイト配列に変換 dim eucBytes() as Byte encBytes = System.Text.Encoding.Convert( uniEnc, eucEnc, uniBytes) ' ファイル出力 dim st as new System.IO.FileStream("ファイルパス", IO.FileMode.Create) st.Write( eucBytes, 0, eucBytes.Length ) st.Close()

kourei
質問者

補足

ファイル出力でなく、encBytes を文字列にしたい場合は どうすればよいのでしょうか? 説明が足りなかったのですが私がやりたいのは HTMLを読み込んだ場合にEUC-JPだったものをVB.NETで処理できる SJIS?(Unicode??)に内部的に変換し、その文字列を使いたいです。