感受一下Java乱码出现就知道怎么解决Java乱码了

public class StringSize {

    public static void main(String[] args) throws Exception {

        System.out.println("================UTF8 ENCODE================");
        // UTF8 ENCODE 一个中文汉字 3个字节
        String testDate = "abc123哈哈";
        System.out.println(testDate.length());
        System.out.println(testDate.getBytes(StandardCharsets.UTF_8).length); // 6+6

        System.out.println("================GBK ENCODE================");
        //GBK ENCODE 一个中文汉字 2个字节
        testDate = "abc123哈哈";
        System.out.println(testDate.length());
        System.out.println(testDate.getBytes(Charset.forName("GBK")).length); // 6+4
        System.out.println("================ISO_8859_1 ENCODE================");
        //ISO_8859_1 ENCODE 一个中文汉字 1个字节
        System.out.println(testDate.getBytes(StandardCharsets.ISO_8859_1).length); // 6+2

        Charset GBK = Charset.forName("GBK");
        System.out.println("================乱码解决================");
        byte[] utf8Data = testDate.getBytes(StandardCharsets.UTF_8);
        byte[] gbkData = testDate.getBytes(GBK);

        System.out.println("new String(utf8Data) = " + new String(utf8Data));
        System.out.println("new String(gbkData) = " + new String(gbkData));

        System.out.println("new String(utf8Data,StandardCharsets.ISO_8859_1) = " + new String(utf8Data,
                StandardCharsets.ISO_8859_1));
        System.out.println("new String(gbkData,StandardCharsets.ISO_8859_1) = " + new String(gbkData,
                StandardCharsets.ISO_8859_1));
        System.out.println("new String(utf8Data,GBK) = " + new String(utf8Data, GBK));
        System.out.println("================乱码================");
        System.out.println("new String(utf8Data) = " + new String(utf8Data));
        System.out.println("new String(gbkData, GBK) = " + new String(gbkData, GBK));
        System.out.println("================================");

    }
}

输出如下:
        ================UTF8 ENCODE================
        8
        12
        ================GBK ENCODE================
        8
        10
        ================ISO_8859_1 ENCODE================
        8
        ================乱码解决================
        new String(utf8Data) = abc123哈哈
        new String(gbkData) = abc123����
        new String(utf8Data,StandardCharsets.ISO_8859_1) = abc123哈哈
        new String(gbkData,StandardCharsets.ISO_8859_1) = abc123¹þ¹þ
        new String(utf8Data,GBK) = abc123鍝堝搱
        ================乱码================
        new String(utf8Data) = abc123哈哈
        new String(gbkData, GBK) = abc123哈哈
        ================================

 

posted @ 2021-09-02 22:30  bf378  阅读(117)  评论(0编辑  收藏  举报