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

晕死了,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)