乐趣区

关于java:utf8编码

1、为什么要编码
计算机底层保留任何数据都是二进制,而人类浏览须要图形化的内容,所以须要将图形化和二进制进行翻译。
2、怎么编码
用 ascii 举例
(1)确定编码方案,每七位二进制示意一个字符
(2)确定二进制对应字符的映射(字符表),用七位二进制取出对应的字符

3、有哪些编码方案
(1)ascii

七位二进制示意一个字符

(2)utf-8

兼容 ascii
字节数不确定
第一个字节最高位为 0,示意一个字节,如 0110 0001 示意 a
第一个字节最高位为 110x xxxx,示意两个字节,第二个字节 10xx xxxx
第一个字节最高位为 1110 xxxx,示意三个字节,第二 / 三个字节 10xx xxxx
第一个字节最高位为 1111 0xxx,示意四个字节,第二 / 三 / 四个字节 10xx xxxx‘王’字二进制 111001110001011
对应的二进制编码为 111001110100111001001011

    String str = "111 001110 001011";
    String bin = "111001111000111010001011";
    System.out.println(binaryToChar(bin));
}

private static String binaryToChar(String binary) throws UnsupportedEncodingException {byte[] bytes = new byte[binary.length()/8];
    for(int i=0;i<binary.length()/8;i++){String s=binary.substring(i*8,i*8+8);
        bytes[i]=Integer.valueOf(s,2).byteValue();}
    return new String(bytes,StandardCharsets.UTF_8.name());
}

退出移动版