介绍:

计算机之间,无法直接传输一个一个的字符,而只能传输二进制数据。为了使发送的字符信息能以二进制的i形式进行传输,需要使用一种”密码本”,在JAVA中,这个”密码本”就是字符码表。字符码表是一种可以方便计算机识别的特殊字符集,它是将每一个字符和一个唯一的数据对应而形成的一张表。即便通过这种方式可以解决问题,但是远远没有相信的这么简单,因为这个世界上语言实在是太多了,所有针对不同的文字,不同的国家都制定了自己的码表。

<<几种常见的字符码表>>

通过选择合适的码表就能完成字符和二进制数据的转换,从而实现数据的传输。

编码解码:
在实际的编程中,经常会出现字符转换为字节或者逆过程,这两个操作实际上称为编码解码过程。一般把字符串转换成计算机识别的字节序列称为编码,把字节序列转换为普通人能看懂的明文字符称之为解码。

Demo:

        String str = "学JAVA";
        byte[] b1 = str.getBytes();//使用默认的码表编码
        byte[] b2 = str.getBytes("GBK");
        byte[] b3 = str.getBytes("UTF-8");

        System.out.println(Arrays.toString(b1));//打印出字节数组的字符串形式
        System.out.println(Arrays.toString(b2));
        System.out.println(Arrays.toString(b3));

        String result1 = new String(b1, "UTF-8");
        String result2 = new String(b2, "GBK");
        String result3 = new String(b3, "GBK");
        System.out.println(result1);
        System.out.println(result2);
        System.out.println(result3);

输出:
[-27, -83, -90, 74, 65, 86, 65]
[-47, -89, 74, 65, 86, 65]
[-27, -83, -90, 74, 65, 86, 65]
学JAVA
学JAVA
瀛AVA

这里b1以UTF-8编码,所以以GBK的形式解码会出现乱码现象。