socket的特大难题!!低手免进,高手请进,进者有分。

jeffd 2003-10-09 09:19:03
各位大侠:
我在windown2003平台上用c#写了个SOCKET程序,连接到一台unix服务器上,传送字母及数字时正常显示,传送汉字时乱码。这是为什么?
...全文
33 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
apollonew 2004-03-26
  • 打赏
  • 举报
回复
mark
xixigongzhu 2003-10-09
  • 打赏
  • 举报
回复
斑竹可以这样检查数据是否传输正确:
在发送数据(字节流)时记下发送的字节,必须是发送前一刻的字节流,可以用输出到控制台的方式;
在接收数据时记下接收的字节,看与发送的字节是否一致,如果一致,证明传输没有问题。问题可能出在编码上。如果在发送时用的是什么编码,那么接收也必须用同一种编码。但是如果unix不支持中文输出,那只能是乱码。
xixigongzhu 2003-10-09
  • 打赏
  • 举报
回复
请问斑竹unix支持中文吗?在unix端接收数据用的也是Unicode编码吗?
jeffd 2003-10-09
  • 打赏
  • 举报
回复
to windinwing(潇笑) :
老实说你是不是微软派来的卧底!
兄台真是历害!!!
照您说的做了。ok了!!!

能给个QQ吗?
wjohenw 2003-10-09
  • 打赏
  • 举报
回复
自己多测试几次就出来了,看哪种正确
windinwing 2003-10-09
  • 打赏
  • 举报
回复
private void SendData(string data)
{
Byte[] byte_data = System.Text.Encoding.Default.GetBytes(data.ToCharArray());

int nCount = m_pClientSocket.Send(byte_data,byte_data.Length,0);
if(nCount != byte_data.Length)
{
throw new Exception(".....!");
}

........
}

主要是这一句,转换编码 用
Byte[] byte_data = System.Text.Encoding.GetEncoding("gb2312").GetBytes(data.ToCharArray());也可以

m_pClientSocket为监听套接字

if(nCount != byte_data.Length) 判断发送字任的长度

在我的机器win 2003 .net框架1.1下没问题
jeffd 2003-10-09
  • 打赏
  • 举报
回复
我在客户端先用msgbyte=Encoding.Unicode.GetBytes(msg);writer.Write(msgbyte);做了处理,你看这样行吗?
cdbnzc 2003-10-09
  • 打赏
  • 举报
回复
up!学习...
JoeM 2003-10-09
  • 打赏
  • 举报
回复
字符编码一致吗?

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧