Socket通信中文字符乱码问题解决方法
很久前我实现了一个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的,所以大家如果遇到此类情况,最好检查下你传输的字符串的来源文件的格式是否统一。只有当字符串格式在所有环节都一致时,才能避免类似的字符乱码问题。
info Last modified by Raymond 3 years ago
copyright
This page is subject to Site terms.
comment Comments
No comments yet.