日期:2014-05-19  浏览次数:21571 次

菜鸟求助:关于TCP通信的问题(发汉字变乱码)
我初学网络编程
今天照书上编了一个小的TCP通讯的例子
包含客户端和服务器
用了.NET和.Socket这两个类
我看了一下
其中发数据好象是用StreamReader的Write方法
读数据是用StreamReader的readline方法
但是出了个问题
书上的例子是用System.Text.Encoding.ASCII.GetBytes(command.ToCharArray());
来转换发送的字符串,接收是用readline方法来接收了
这样发是可以的,但是只能发英文字母,如果发汉字就是乱码了
我把转换的改为System.Text.Encoding.Unicode.GetBytes(command.ToCharArray());
转换过来却也是些乱码,TCPCLIENT没有UDPCLIENT的receive方法
我不知道怎么转回来了
请高手指点下
我的思路是不是有问题
象我要传汉字怎么办,如能给出关键代码将万分感激。

------解决方案--------------------
使用utf8编码再试
------解决方案--------------------
System.Text.Encoding.ASCII.GetBytes(command.ToCharArray());
---------------------------
改成:
System.Text.Encoding.Default.GetBytes(command.ToCharArray());
------解决方案--------------------
readline 使用的是系统默认编码!
------解决方案--------------------
关键是要确保发送方和接受方都使用相同的编码
------解决方案--------------------
用System.Text.Encoding.UTF7.GetBytes
或者System.Text.Encoding.UTF8.GetBytes
------解决方案--------------------
汉字编码需要如下转换:
System.Text.Encoding.GetEncoding( "GB2312 ").GetBytes做转化,如果使用System.Text.Encoding.ASCII转化,中文都是??