有关在SOCKET编程中,汉字编码问题.
socket.send(byte[])
汉字在内存中占两个字节,而ASCII只占一个字节.
如果只传ASCII,编码方法可为:System.Text.ASCIIEncoding.ASCII.GetBytes(str);
如果只传汉字,编码方法可为:System.Text.ASCIIEncoding.Unicode.GetBytes(str);
用Unicode的话,那么每个字都必须占两个字节,而对于英文,本来只占一个字节,但用Unicode的话就都占两字节了.但如果用ASCII编码,则对方收到的汉字是问号.我想问:在网络编程中,对于含有汉字的字符串,怎么编码传给对方?
比如将下面的字串传给对方:string str = "我爱abc";
如果System.Text.ASCIIEncoding.Unicode.GetBytes(str);
则abc分别占两字节.对于,我碰到的问题是,服务器是其它公司做的,我只做客户端,如果都用Unicode,那对方校码失败.我想可能是双字节的问题.但如果用ascii是肯定不能传汉字的.
我全都传英文则没问题.因服务器是别人公司的,且已接入了多个客户端,不能改了.请大家帮忙,怎么传这种有汉字的字串?
socket.send(byte[])
汉字在内存中占两个字节,而ASCII只占一个字节.
如果只传ASCII,编码方法可为:System.Text.ASCIIEncoding.ASCII.GetBytes(str);
如果只传汉字,编码方法可为:System.Text.ASCIIEncoding.Unicode.GetBytes(str);
用Unicode的话,那么每个字都必须占两个字节,而对于英文,本来只占一个字节,但用Unicode的话就都占两字节了.但如果用ASCII编码,则对方收到的汉字是问号.我想问:在网络编程中,对于含有汉字的字符串,怎么编码传给对方?
比如将下面的字串传给对方:string str = "我爱abc";
如果System.Text.ASCIIEncoding.Unicode.GetBytes(str);
则abc分别占两字节.对于,我碰到的问题是,服务器是其它公司做的,我只做客户端,如果都用Unicode,那对方校码失败.我想可能是双字节的问题.但如果用ascii是肯定不能传汉字的.
我全都传英文则没问题.因服务器是别人公司的,且已接入了多个客户端,不能改了.请大家帮忙,怎么传这种有汉字的字串?
我用C#写客户端传数据,含有汉字,怎么编码传对方?如果用ASCII,则是乱码;
如果用Uicode则英文的也占了两位.
怎么处理这种传含有汉字的字串?
即使现在不出问题,以后也会出问题。
byte[] byteM=System.Text.Encoding.GetEncoding("gb2312").GetBytes(Msg1);
byte[] byteM=System.Text.Encoding.GetEncoding("gb2312").GetBytes(Msg1);
Response.Write(byteM.Length.ToString());
Response.Write(System.Text.Encoding.GetEncoding("gb2312").GetString(byteM));
测试了一下
结果:11欢迎你422dd
gb2312应该能满足你要求了
Response.Write(byteM.Length.ToString());
Response.Write(System.Text.Encoding.GetEncoding("gb2312").GetString(byteM));
==========================如果发送与接收都是一个人写的话,肯定没问题,传汉字也可以,我测过了.但对方确实能收汉字,但我的的数据如果含字就是问号,我想可能是编码不一致引起的.我想知道在网络编程中,是方法处理的.我原来都是都用双字节编码的方法.