[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/09/15(Fri) 20:39
投稿者名:たかはし
Eメール:
URL :
タイトル:
winsockでUDPで受信すると文字化けします。
VB6で、ゲームをしながらチャットができるプログラムを作製しております。

winsockのUDPを使って通信しようとしているのですが、受信側でGetDataし表示すると受信した文字列が文字化けしています。String型の変数を準備し、受信したデータをそれに格納しています。過去ログや他のサイトで調べてみると受信した全角文字のデータがUnicodeになることがあるらしいので、受信したデータをStrConvのvbFromUnicodeで変換してみたのですが、それでも上手くいきません。何が問題なのでしょうか、よろしくお願いします。

例えば「123456789」と送信すると、「?冂?厂???」となってしまい、「あいうえおらりるれろ藍上柿空家」と送信すると「???????????瓏セ??」となってしまいます。どちらも、StrConvした後です。

以下はその部分のコードです。Winsock1で通信しています。

Private Sub Command1_Click() ’Text2のテキストを全角にして送信します
Text1.Text = "自分の発言:" & Text2.Text & vbCrLf & Text1.Text
Winsock1.SendData StrConv(Text2.Text, vbWide)
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 
Dim kimasita As String
Winsock1.GetData kimasita
MsgBox StrConv(kimasita, vbFromUnicode)
End Sub

投稿時間:2006/09/15(Fri) 22:52
投稿者名:Renard
Eメール:
URL :
タイトル:
Re: winsockでUDPで受信すると文字化けします。
#適宜、改行して下さい。非常に読みづらいです。

> 例えば「123456789」と送信すると、「?冂?厂???」となってしまい、
>「あいうえおらりるれろ藍上柿空家」と送信すると「???????????瓏セ??」となってしまいます。
>どちらも、StrConvした後です。

ヒント
UDPとか関係なく下記で再現しますね。

Private Sub Command1_Click()
    Dim s As String
    
    s = "12345679"
    s = StrConv(s, vbWide)
    
    MsgBox StrConv(s, vbFromUnicode)
    'MsgBox s
    
End Sub

投稿時間:2006/09/16(Sat) 00:26
投稿者名:たかはし
Eメール:
URL :
タイトル:
Re^2: winsockでUDPで受信すると文字化けします。
返信ありがとうございました、StrConvしなくてもよいということですね?
そのまま受信したところ、きちんと表示されていました。
また、改行がなくてすいません、折り返されると思っていまして・・・。
次回からは気をつけます。

投稿時間:2006/09/24(Sun) 00:53
投稿者名:ヤマ@文系
Eメール:
URL :
タイトル:
Re^3: winsockでUDPで受信すると文字化けします。
逆でコンバートに失敗してるんではないだろうか?
byte配列で受け取るといいかもしれないです。