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

概述

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

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

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

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传输中文乱码解决思路及代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部