zoukankan      html  css  js  c++  java
  • java中的编码

    1. 字库表:相当于所有可读或者可显示字符的数据库
    2. 编码字符集(编码):用一个编码值来表示一个字符在字库中的位置
    3. 字符编码(编码格式):把编码值转换成另外一种存储格式

    Unicode就是上文中提到的编码字符集,而UTF-8就是字符编码,即Unicode规则字库的一种实现形式。

    编码字符集为字库表中的字符位置编码,两者一一对应,由于很多时候只使用到字库中的一部分字符,若使用编码字符集则会造成浪费,故使用字符编码

    java的string使用的编码是unicode,但是在存储到外存或者通过网络传输前没有编码格式

    1. java字符串编码
    public static void main(String[] args) throws IOException {
    
            String s = "篱开罗A";
    
            //不指定则使用项目默认字符编码将字符串转换位字节数组
            byte[] bytesWithUTF8 = s.getBytes();
            //指定使用GBK编码格式
            byte[] bytesWithGBK = s.getBytes("GBK");
    
            //不指定字符编码,默认使用项目字符编码,此处是UTF-8
            System.out.println(new String(bytesWithUTF8));
            for (byte b : bytesWithUTF8) {
                //toHexString接收的参数为int,此处byte被强制转换成int,& 0xff去除高24位
                //UTF-8每个中文使用三个字节,字母一个字节
                System.out.print(Integer.toHexString(b & 0xff) + " ");
            }
            System.out.println();
    
            //指定使用GBK进行解码
            System.out.println(new String(bytesWithGBK,"GBK"));
            for (byte b : bytesWithGBK) {
                // GBK每个中文使用两个字节,字母一个字节
                System.out.print(Integer.toHexString(b & 0xff) + " ");
            }
            System.out.println();
    
    
            //原本UTF-8编码格式的字节数组被指定使用GBK进行解码,得到乱码
            String errStr = new String(bytesWithUTF8, "GBK");
            //对错误字符串使用GBK进行编码,获取原字节数组
            byte[] bytes = errStr.getBytes("GBK");
            //使用UTF-8编码格式进行解码
            String rightStr = new String(bytes, "UTF-8");
            System.out.println("errStr: " + errStr);
            System.out.println("rightStr: " + rightStr);
        }
    
    

    reference

    十分钟搞清字符集和字符编码

    java中GBK编码格式转成UTF8,用一段方法实现怎么做?

    Java IO流

  • 相关阅读:
    【】C# Sealed、new、virtual、abstract、override的理解
    【】C# Sealed、new、virtual、abstract、override的理解
    C#中的堆和栈理解
    C#中的堆和栈理解
    C#中的堆和栈理解
    C#编译和运行过程图例
    C#编译和运行过程图例
    C#编译和运行过程图例
    【codeforces 257D】Sum
    【codeforces 348B】Apple Tree
  • 原文地址:https://www.cnblogs.com/bloglkl/p/6515152.html
Copyright © 2011-2022 走看看