当前位置:编程学习 > C#/ASP.NET >>

关于套接字的问题

我用套接字在读取一篇网页的时候,出现了中文乱码,请高手指点一下啊

比如:原文:

据悉,艺术家威拉德以制作微缩艺术品著称,歌星艾尔顿·约翰、查尔斯王子等人都收藏有他的作品。此前,威拉德曾制作过一个仅2毫米大小的世界杯复制品、一个只有针眼大小的弦乐四重奏乐团,甚至,他竟在一根钉子顶部上制作出了亨利八世和他的3名妻子的微型塑像。 


读取的时候就变成了:

据悉,艺术家威拉德以制作微缩艺术品著称,歌星艾尔顿·约翰、查尔斯王子?热硕际詹赜兴淖髌贰4饲埃略谱鞴桓鼋?毫米大小的世界杯复制品、一个只有针眼大小的弦乐四重奏乐团,甚至,他竟在一根钉子顶部上制作出了亨利?耸篮退?名妻子的微型塑像。

读取的程序代码为:

string body = "";
            byte[] RecvBuffer = new byte[10240];
            int nbytes;
            while ((nbytes = socket.Receive(RecvBuffer, 0, 10240, SocketFlags.None)) > 0)
            {
                body += Encoding.GetEncoding("gb2312").GetString(RecvBuffer, 0, nbytes);
            }

这里错了,还是不能这么读取????? --------------------编程问答-------------------- 设置成其他编码试试! --------------------编程问答-------------------- 其他编码都不行啊,都是乱码。或者是byte数组的长度不够长? --------------------编程问答-------------------- 这两个字解释出问题?
"等"、"八"
你看看把这两个字换换位置
确定是不是这两个字导致的 --------------------编程问答-------------------- 用UTF-8,网页编码也用Unicode(UTF-8)试试。。。。 --------------------编程问答-------------------- --------------------编程问答-------------------- 循环读取的时候,Console.WriteLine(解码后的字符串),看看是哪次读取解码出问题了?  

我估计是最后一次读取的data解码影响了前面读取的,因为socket接受的数据并非都是文本,在文本数据接收完后,可能还会收到一些非文本数据,会影响解码。 --------------------编程问答-------------------- 你发送和接收都 用unicode看看呢
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,