VB6.0でJISをUNICODEに変換するには

解決


ぎもん  2008-09-24 15:27:00  No: 101115  IP: 192.*.*.*

VB6.0でツールを作成しています。

RS232Cで受信した文字(JIS)を画面上に表示したいのですが
文字化けしてしまいます。

例)
受信したJISコード:494A(品という文字です)
UNICODE変換して画面上に、'品'と表示したい。

変換方法を教えていただけないでしょうか。
よろしくお願い致します。

編集 削除
 2008-09-24 16:04:05  No: 101116  IP: 192.*.*.*

StrConv(???, vbUnicode)
ではダメ?

編集 削除
魔界の仮面弁士  2008-09-24 16:48:51  No: 101117  IP: 192.*.*.*

それは、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

編集 削除
ぎもん  2008-09-24 16:54:44  No: 101118  IP: 192.*.*.*

回答ありがとうございます。
教えていただいた方法を試しましたが、うまくいきませんでした。
試したソースは下記になります。

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

申し訳ありませんが、他の方法を教えてください。
よろしくお願い致します。

編集 削除
ぎもん  2008-09-24 20:04:40  No: 101119  IP: 192.*.*.*

あさん、魔界の仮面弁士さんありがとうございました。

魔界の仮面弁士さんに教えていただいたやり方で無事解決しました。
またわからないことがありましたら、よろしくお願いします。

編集 削除