最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

GBK中文乱码恢复:鍙戣捣璁㈠崟鏀粯鍏ュ彛

Java基础 太平洋学习网 浏览 评论

当我们在浏览器中遇到类似“鍙戣捣璁㈠崟鏀粯鍏ュ彛”这样的中文乱码(GBK等),在不知道是哪种编码转哪种编码出现的情况,该如何恢复中文乱码呢?

如果你懂Java,那么你一定明白这句话表示的是什么:

String newStr = new String("鍙戣捣璁㈠崟鏀\uE219粯鍏ュ彛".getBytes("GBK"),"UTF-8");

它表示如果错误的中文乱码之前设置的是GBK,而你浏览器或开发环境是UTF-8,造成了中文乱码“鍙戣捣璁㈠崟鏀粯鍏ュ彛”这种效果,那么可以借用上面的方法进行还原中文。

如果你什么都不知道,可以借用下方的工具类来恢复中文乱码问题,代码如下:

public class CodeDemo {
    private static String[] charsetArr = {"UTF-8","GB18030","GB2312","GBK","Windows-1252","ISO8859-1"};

    public static void testAllCharset(String text) {
        if (text == null || text.length() == 0) {
            System.out.println("文本不能为空");
            return;
        }

        System.out.println("说明原始设置编码是     当前浏览器编码(出错)     乱码恢复的内容");
        printSeparator();

        for (String curCharset : charsetArr) {
            try{
                byte[] btArr = text.getBytes(curCharset);
                for (String originCharset : charsetArr) {
                    if (originCharset.equals(curCharset)) {
                        continue;
                    }
                    String encodeText = new String(btArr,originCharset);
                    printTable(curCharset, originCharset, encodeText);
                }
                printSeparator();
            }catch (Exception ex){
                ex.printStackTrace();
            }
        }
    }

    private static void printSeparator() {
        System.out.println("--------------------------------------------------------");
    }

    //打印表格
    private static void printTable(String curCharset, String originCharset, String encodeText) {
        System.out.print(curCharset);
        for (int i = 0; i < 15 - curCharset.length(); i++) {
            System.out.print(" ");
        }
        System.out.print("|   " + originCharset);
        for (int i = 0; i < 16 - originCharset.length(); i++) {
            System.out.print(" ");
        }
        System.out.println("|     " + encodeText);
    }

    public static void main(String[] args){
        //测试乱码
        testAllCharset("鍙戣捣璁㈠崟鏀\uE219粯鍏ュ彛");
    }
}

上方代码输出的结果如下所示:

image.png

从上方截图不难看出,原来我们出现标题中的这种中文乱码,是因为原始编码是GBK,而浏览器或开发环境设置的编码是UTF-8,导致的这种错误!

如果我们不知道原始中文设置的什么编码,而在浏览器或开发环境中却出现“鍙戣捣璁㈠崟鏀粯鍏ュ彛”这种中文乱码错误,那么就可以直接用上方的工具类输出结果查看即可。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/java/1095.html
"文章很值,打赏犒劳作者一下"
微信号: Javaweb_engineer

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

与本文相关的文章

发表我的评论
取消评论

表情

您的回复是我们的动力!

  • 昵称 (必填)

网友最新评论