我是靠谱客的博主 霸气翅膀,这篇文章主要介绍java在Socket传输中文乱码解决思路及代码,现在分享给大家,希望可以做个参考。

中文乱码产生的原因就是从GBK转到UTF-8,或者是不同的编码格式来回转,导致byte[]中存放的字节丢失。

思路是:在客户端进行传输前,将需要传输的字节,以一个编码方式进行传输,假设设置GBK,之后在服务端接收到后,先使用new String(byte,“GBK”);去接收,这样只要保证传输时候设置的编码格式和接收的时候设置的编码格式就不会乱码。

案例:对方要发报文,报文头中存在编码格式
解决方案:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static String getCharsetName(byte[] bytes) { byte[] cloneBytes = bytes.clone(); String xmlMessage = null; try { xmlMessage = new String(cloneBytes, "GBK"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String xmlHeader = null; if (xmlMessage != null) { xmlHeader = xmlMessage.substring(0, 100); } if (xmlHeader != null) { if (xmlHeader.contains("UTF-8") || xmlHeader.contains("utf-8")) { return "UTF-8"; } if (xmlHeader.contains("GBK") || xmlHeader.contains("gbk")) { return "GBK"; } if (xmlHeader.contains("GB2312") || xmlHeader.contains("gb2312")) { return "GB2312"; } } // 否则默认返回GBK编码格式 return "GBK";

最后

以上就是霸气翅膀最近收集整理的关于java在Socket传输中文乱码解决思路及代码的全部内容,更多相关java在Socket传输中文乱码解决思路及代码内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部