こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

.NET 文字コードの変換

VB2008で文字列を他の文字コードにする方法が知りたいです。
何かしての部分がわかりません。
VB2005でも使えるものだったらうれしいです。

Dim str_sjis as string
Dim str_euc as string = "パソコン" '例えばEUC-JP

'''何かして

str_sjisにシフトJISで文字列が入っている。


.Netの文字コードの変換の仕方がごちゃごちゃして分かりづらいです。

投稿日時 - 2008-11-02 16:22:04

QNo.4448382

困ってます

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

EUC文字列のByte配列からEncodingのGetStringで変換すれば良いでしょう

dim ss as String = System.Text.Encoding("EUC-JP").GetString(eucBytes)
でUnicode文字列へ変換できると思います

投稿日時 - 2008-11-05 13:42:19

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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()

投稿日時 - 2008-11-02 22:02:06

補足

ファイル出力でなく、encBytes を文字列にしたい場合は
どうすればよいのでしょうか?

説明が足りなかったのですが私がやりたいのは
HTMLを読み込んだ場合にEUC-JPだったものをVB.NETで処理できる
SJIS?(Unicode??)に内部的に変換し、その文字列を使いたいです。

投稿日時 - 2008-11-03 00:02:03

あなたにオススメの質問