DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ネットワークでの文字化け

環境/言語:[WinXP、VB.NET]
分類:[.NET]

今チャットのプログラムを作っています。
サンプルのプログラムを変更しつつ作っているのですが、サンプルでは日本語が文字化けしてしまいます。
送信側のエンコードは分かるのですが、受信側でどうエンコードしてよいのか分かりません。

以下のメソッドでネットワークから受け取ったバイト型配列を文字に変換しています。
Private Sub BuildString(ByVal Bytes() As Byte, ByVal offset As Integer,ByVal count As Integer)
Dim intIndex As Integer

For intIndex = offset To offset + count - 1
If Bytes(intIndex) = 10 Then
mytext.Append(vbLf)

Dim params() As Object = {mytext.ToString}
Me.Invoke(New DisplayInvoker(AddressOf Me.DisplayText), params)

mytext = New StringBuilder
Else
mytext.Append(ChrW(Bytes(intIndex)))
End If
Next
End Sub

エンコードはこのメソッド内で行えばよいのでしょうか?
またどうやってエンコードを行えばよいのでしょうか?

どなたかよろしければ教えてください!
.NET Tipsにサンプルが置いてありますよ。
http://dobon.net/vb/dotnet/internet/downloadusesocket.html
Crissさん、ありがとうございます。
.NET Tipsのサンプルを参考に作成してみましたが、サーバにはきちんと日本語が表示できたのですがサーバから各クライアントに送信した時に正常に動作してくれません。
送信の処理は以下のメソッドで行っています。
Private Sub Send(ByVal t As String)
On Error Resume Next
Dim w As New IO.StreamWriter(myclient.GetStream, Encoding.GetEncoding(932))
w.Write(t & vbCr)
w.Flush()
End Sub

エンコードはきちんと行っているはずなのですが・・・。

ちなみに以下のプログラムを参考に作成してます。http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadvnet/html/vbnet08282001.asp

エンコードの仕方がおかしいのでしょうか?
■No1522に返信(しっぽさんの記事)

コードを詳しく見ていませんし、文字コードにも詳しくないのではっきりとは分かりませんが、
mytext.Append(ChrW(Bytes(intIndex)))
という方法では難しいのではないでしょうか。
System.Text.Encoding
はあえて使っていないのでしょうが、ここはこれを使って文字列に変換した方が良いのではないでしょうか。

DOBON.NET | プログラミング道 | プログラミング掲示板