一、字符集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编码。
字符集相关知识:
一、字符集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编码。