欢迎光临
我们一直在努力

字符集相关知识:

一、字符集

1.1 字符集的来历

我们知道计算机是美国人发明的,由于计算机能够处理的数据只能是0和1组成的二进制数据,为了让计算机能够处理字符,于是美国人就把他们会用到的每一个字符进行了编码(所谓编码,就是为一个字符编一个二进制数据),如下图所示:

1.2 汉字和字母的编码特点

需要我们注意汉字和字母的编码特点:

  • 如果是存储字母,采用1个字节来存储,一共8位,其中第1位是0

  • 如果是存储汉字,采用2个字节来存储,一共16位,其中第1位是1

当读取文件中的字符时,通过识别读取到的第1位是0还是1来判断是字母还是汉字

  • 如果读取到第1位是0,就认为是一个字母,此时往后读1个字节。

  • 如果读取到第1位是1,就认为是一个汉字,此时往后读2个字节。

1.3 Unicode字符集

下面我们详细介绍一下UTF-8这种编码方案的特点。

1.UTF-8是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节
2.英文字符、数字等只占1个字节(兼容标准ASCII编码),汉字字符占用3个字节。
3.极少数字符占4个字节
注意:技术人员在开发时都应该使用UTF-8编码!

1.4 字符集小结

ASCII字符集:《美国信息交换标准代码》,包含英文字母、数字、标点符号、控制字符
特点:1个字符占1个字节

GBK字符集:中国人自己的字符集,兼容ASCII字符集,还包含2万多个汉字
特点:1个字母占用1个字节;1个汉字占用2个字节

Unicode字符集:包含世界上所有国家的文字,有三种编码方案,最常用的是UTF-8
   UTF-8编码方案:英文字母、数字占1个字节兼容(ASCII编码)、汉字字符占3个字节

1.5 编码和解码

  • 编码:把字符串按照指定的字符集转换为字节数组

  • 解码:把字节数组按照指定的字符集转换为字符串

/**
* 目标:掌握如何使用Java代码完成对字符的编码和解码。
*/
public class CharacterTest1 {
public static void main(String[] args) throws Exception {
// 1. 编码
String data = "a我b";
byte[] bytes = data.getBytes(); // 默认是按照平台字符集(UTF-8)进行编码
System.out.println(Arrays.toString(bytes));

// 按照指定字符集进行编码
byte[] bytes1 = data.getBytes("GBK");
System.out.println(Arrays.toString(bytes1));

// 2. 解码
String s1 = new String(bytes); // 按照平台默认编码(UTF-8)解码
System.out.println(s1);

String s2 = new String(bytes1, "GBK");
System.out.println(s2);
}
}

总结:

1. 常见字符集有哪些?各自存储数据的特点是什么?

英文和数字等在任何国家的字符集中都占1个字节

GBK字符中一个中文字符占2个字节

UTF-8编码中一个中文1般占3个字节

   

2. 编码前的字符集和解码时的字符集有什么要求?

必须一致,否则会出现字符乱码

   

3. 英文和数字,在常见的字符集中是否会出现乱码?为什么?

英文,数字一般不会乱码,因为很多字符集都兼容了ASCII编码。

赞(0)
未经允许不得转载:171主机测评 » 字符集相关知识:
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址