晕死了,100分求解,sockets中写byte[]数据的问题.
//往当前的数据流中写入一行字符串
streamWriter.WriteLine(STDT_READ_MSG(),Encoding.ASCII);
//刷新当前数据流中的数据
streamWriter.Flush( );
STDT_READ_MSG()里是这样:
string strTemp = "123abc ";
strTemp += ConertStr(myG.SIstring( "号码1 ",4), "Unicode ", "gb2312 ");
return strTemp;
其中123abc可以显示,而汉字出来都是问号
我总算搞明白了.传输是ascii码,而其中的汉字是gb2312的.
见http://community.csdn.net/Expert/topic/5520/5520734.xml?temp=.1147272
也就是说汉字是用两个ascii表示的
string toBeSent = STDT_CARD_LOGIN(strBody,myHead.seq_no);
byte[] byteToBeSent = Encoding.Default.GetBytes(toBeSent);
但streamWriter.WriteLine(*)其中*只能写入string 或是 char[]
而我的汉字是用两个ascii表示的,所以必须写入byte[]
请教高人,我应该如果改呀,谢谢了...
也就是Sockets开发中,写入要如何写入byte[]
------解决方案--------------------up 消失.
goodnight
------解决方案--------------------string stemp = System.Text.Encoding.UTF8.GetString(byteToBeSent);
streamWriter.WriteLine(stemp);
------解决方案--------------------networkStream.Write(byte[]);
直接用这个方法写入数据。不要用StreamWriter。
我个人喜欢直接用Socket对象,比较灵活。
------解决方案--------------------用default就OK了,同事刚问我
------解决方案--------------------这个…………
我写的时候用了utf8 中文就ok了 之前用过default也不行
可能具体的情况不同吧
------解决方案--------------------strXXX = Encoding.Default.GetString(recv)