VB6.0でツールを作成しています。
RS232Cで受信した文字(JIS)を画面上に表示したいのですが
文字化けしてしまいます。
例)
受信したJISコード:494A(品という文字です)
UNICODE変換して画面上に、'品'と表示したい。
変換方法を教えていただけないでしょうか。
よろしくお願い致します。
StrConv(???, vbUnicode)
ではダメ?
それは、JIS:494A(品)からの変換ではなく、
Shift_JIS:9569(品)からの変換の場合かと。>あさん
受信データ中の漢字イン/アウトの有無にもよりますが、
たとえば、こんな感じでいかがでしょう。>ぎもんさん
Private Sub Form_Load()
Dim a() As Byte
ReDim a(1)
a(0) = &H49
a(1) = &H4A
MsgBox JISBinToString(a, True)
End Sub
Public Function JISBinToString(ByRef bin() As Byte, Optional forceKanji As Boolean = False) As String
Dim xIn(2) As Byte, xOut(2) As Byte
xIn(0) = &H1B: xOut(0) = &H1B
xIn(1) = &H24: xOut(1) = &H28
xIn(2) = &H42: xOut(2) = &H42
With CreateObject("ADODB.Stream")
.Type = 1 'adTypeBinary
.Open
If forceKanji Then .Write xIn
.Write bin
If forceKanji Then .Write xOut
.Position = 0
.Type = 2 'adTypeText
.Charset = "iso-2022-jp"
JISBinToString = .ReadText()
.Close
End With
End Function
回答ありがとうございます。
教えていただいた方法を試しましたが、うまくいきませんでした。
試したソースは下記になります。
Dim byt(10) as Byte
Dim a as String
byt(0) = &H49
byt(1) = &H4A
a = StrConv(byte, vbUnicode)
結果はa="IJ"となりました。
ちなみに、受信したJIS文字コードが'品'になることは、
下記のHPで確認しました(先頭にhを追記してください)。
ttp://ash.jp/code/unitbl21.htm
申し訳ありませんが、他の方法を教えてください。
よろしくお願い致します。
あさん、魔界の仮面弁士さんありがとうございました。
魔界の仮面弁士さんに教えていただいたやり方で無事解決しました。
またわからないことがありましたら、よろしくお願いします。