Raymond Raymond

Socket通信中文字符乱码问题解决方法

event 2009-05-13 visibility 2,084 comment 0 insights toc
more_vert
insights Stats
toc Table of contents

很久前我实现了一个Windows服务,监听本机的TCP 5678端口,并且响应后返回给客户端一个随机的字符串,这个字符串中包含有中文字符。但是传输的过程中客户端接收到的字符串中文乱码了,于是自己检查了下客户端和服务器端的读取字节的编码是否统一

客户端

这是客户端的代码:

UTF8Encoding encoder = new UTF8Encoding();
textBoxQuote.Text =encoder.GetString(buffer);

服务器端

这是服务器端的代码:

Socket clientSocket = listener.AcceptSocket();
                string message = GetRandomQuoteOfTheDay();
                UTF8Encoding encoder = new UTF8Encoding();
                byte[] buffer = encoder.GetBytes(message);
                clientSocket.Send(buffer, buffer.Length, 0);
                clientSocket.Close();

两个都是UTF-8格式的但是为什么出现了乱码的情况呢?

解决问题

检查了下读取随机字符串的那个文件的格式原来是ASCII格式的,于是自己另存为UTF-8格式的这个问题就解决了,因为我那个文件用记事本创建默认保存格式不是UTF-8的,所以大家如果遇到此类情况,最好检查下你传输的字符串的来源文件的格式是否统一。只有当字符串格式在所有环节都一致时,才能避免类似的字符乱码问题。

More from Kontext
comment Comments
No comments yet.

Please log in or register to comment.

account_circle Log in person_add Register

Log in with external accounts