编码与解码

    xiaoxiao2021-11-30  17

    编码与解码   编码: 把看得懂的字符变成看不懂码值这个过程我们称作为编码。  解码: 把码值查找对应的字符,我们把这个过程称作为解码。

    注意: 以后编码与解码一般我们都使用统一的码表。否则非常容易出乱码。

    常见的码表如下:

    ASCII: 美国标准信息交换码。用一个字节的7位可以表示。 -128~127  256

    ISO8859-1:拉丁码表。欧洲码表,用一个字节的8位表示。又称Latin-1(拉丁编码)或“西欧语言”。ASCII码是包含的仅仅是英文字母,并且没有完全占满256个编码位置,所以                           它以ASCII为基础,在空置的0xA0-0xFF的范围内,加入192个字母及符号,藉以供使用变音符号的拉丁字母语言使用。从而支持德文,法文等。因而它依然是一                           个单字节编码,只是比ASCII更全面。

    GB2312:   英文占一个字节,中文占两个字节。中国的中文编码表。

    GBK:      中国的中文编码表升级,融合了更多的中文文字符号。

    Unicode:  国际标准码,融合了多种文字。所有文字都用两个字节来表示,Java语言使用的就是unicode。

    UTF-8: 英文占一个字节,中文占三个字节。    最多用三个字节来表示一个字符。            

    UTF-16:  不管英文中文都是占两个字节。

      (我们以后接触最多的是iso8859-1、gbk、utf-8)

    public class Demo7 { public static void main(String[] args) throws Exception { /* String str = "中国"; byte[] buf = str.getBytes("utf-8");// 平台默认的编码表是gbk编码表。 编码 System.out.println("数组的元素:"+Arrays.toString(buf)); // str = new String(buf,"utf-8"); //默认使用了gbk码表去解码。 System.out.println("解码后的字符串:"+ str); */ /*String str = "a中国"; // ,0, 97, 78, 45, 86, -3 byte[] buf = str.getBytes("unicode"); //编码与解码的时候指定 的码表是unicode实际上就是用了utf-16. System.out.println("数组的内容:"+ Arrays.toString(buf)); */ String str = "大家好"; byte[] buf = str.getBytes(); //使用gbk进行编码 System.out.println("字节数组:"+ Arrays.toString(buf)); // -76, -13, -68, -46, -70, -61 str = new String(buf,"iso8859-1"); // 出现乱码之后都可以被还原吗? 不是,当出现乱码的时候的对应的字符没有时,就会丢失数据了 byte[] buf2 = str.getBytes("iso8859-1"); str = new String(buf2,"gbk"); System.out.println(str); } }

    转载请注明原文地址: https://ju.6miu.com/read-679118.html

    最新回复(0)