zoukankan      html  css  js  c++  java
  • 感受一下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哈哈
            ================================

  • 相关阅读:
    业务场景和业务用例场景的区别(作者:Arthur网友)
    svn 安装
    PHP has encountered an Access Violation at
    邀请大象一书的读者和广大网友写关于分析设计、建模方面的自愿者文章
    手机网页 复制信息方法 免费短信
    delphi Inno Setup 制作安装程序
    Special Folders
    Windows mobile上获取输入光标位置
    加壳程序无法准确读输入表的解决办法
    C++ PostMessage 模拟键盘鼠标
  • 原文地址:https://www.cnblogs.com/leodaxin/p/15221120.html
Copyright © 2011-2022 走看看