发送数据正常,但是接受信息的时候乱码,何解?

myzxarp 发布于 2014/07/23 09:19
阅读 224
收藏 0

@伤神小怪兽 你好,想跟你请教个问题:

我发送数据的时候正常,但是接收数据的时候,编码为UTF8还是默认都是乱码,不知道为什么,何解呢?是服务端问题还是客户端接收的时候有问题呢?

我接收的时候代码为:

        HandleResult OnReceive(IntPtr dwConnId, IntPtr pData, int iLength)
        {
            //如何查看接收到的数据呢?
            byte[] bytes2 = new byte[iLength];
            Marshal.Copy(pData, bytes2, 0, iLength);
            string str = Encoding.Default.GetString(bytes2);
            AddMsg(str);


       }

截图如下:




加载中
0
wangxigui
wangxigui
发送的时候,你也重新用utf-8先编码一次,然后再传,这样发送端和接收端的编码格式就一样了,应该不会乱码的
0
Tobyee
Tobyee
贴一贴发送代码才清楚问题
0
myzxarp
myzxarp

发送代码如下:

this.txtSend.Text="#SK#LGINNULL00000020000000485DC5184D8831F45B0645E613496F6B0C9E9106DE2AD0C9E5$SK$";

            try
            {
                string send = this.txtSend.Text;


                txtSend.SetControlText(this, send);


                if (send.Length == 0)
                {
                    return;
                }


                byte[] bytes = Encoding.UTF8.GetBytes(send);
                IntPtr dwConnId = client.GetConnectionId();


                // 发送
                if (client.Send(bytes, bytes.Length))
                {
                    AddMsg(string.Format("$ ({0}) Send OK --> {1}", dwConnId, send));
                }
                else
                {
                    AddMsg(string.Format("$ ({0}) Send Fail --> {1} ({2})", dwConnId, send, bytes.Length));
                }


            }

接收代码如下:




        HandleResult OnReceive(IntPtr dwConnId, IntPtr pData, int iLength)
        {
            //如何查看接收到的数据呢?
            byte[] bytes2 = new byte[iLength];
            Marshal.Copy(pData, bytes2, 0, iLength);
            string str = Encoding.UTF8.GetString(bytes2);


            File.WriteAllText(Application.StartupPath+"\\receive.txt",str, Encoding.Default);
            AddMsg(str);


    }


0
myzxarp
myzxarp

截图如下:

0
myzxarp
myzxarp
服务器端发送的代码为什么只有部分代码乱码呢?难道是服务器端有问题?
0
Tobyee
Tobyee
打印OnSend出现乱码,这部分代码呢
0
myzxarp
myzxarp
上面已经贴了啊。发送部分代码。
Tobyee
Tobyee
哦,看错了,不好意思,应该是 AddMsg(str); 打印出现了乱码
Tobyee
Tobyee
我说的是你打印 onsend 这条信息时的代码,你贴的是Send时候的代码
0
xiaoxin
xiaoxin
你要确保你发送的编码与服务器的运行编码是否一样,如果不一致,就要做转码了。所有的乱码情况都是这样发生的
0
Tobyee
Tobyee
就贴出来的代码来看,如果都用UTF8应该没问题的,如果用了 Encoding.Default就得注意客户端,服务端系统的语言区域问题了。
返回顶部
顶部