四、字符流
4.1 出现字符流的原因
由于字符流操作操作汉字的读写不是很方便,所以引用了字符流。汉字在不同编码中所占的字节数不同,常用有GBK(占两个字节)、UIT-8(占三个字节),特别注意汉字不管在哪种编码下编码解码的第一个字节都是负数。
汉字和数字只占一个字符。
4.2 编码表
1、计算机存储信息的时候都是用二进制数存储的,数字和汉字都是其转换后的结果。
2、编码:将数据从存储到计算机中;
解码:从计算机中读取数据。
3、注意:A编码存储,就要用A编码解析——>解码和编码用同一个编码表
4.3 字符集
常见的字符编码:ASCII字符集、GBXXX字符集、Unicode字符集;
ASCII字符集:基于拉丁字母的一套电脑系统,英语、控制字符、和可现实字符(英文大小写,数字,西文符号),使用7位表示一个字符,共128字符。
ASCII字符集扩展的字符,使用8位表示一个字符,共256字符。
GBXXX字符集 GB2312,GBK,GB18030,重点讲GBK,使用双字节编码方案,收录了21003个汉字,GB2312+繁体字和日韩汉字,GB18030增加了少数名族文字
GBK,汉字表示两个字符
Unicode字符集,UTF-8,UTF-16、UTF-32,
在java中常用的两个字符集 GBK 、UTF-8
UTF-8编码规则 |
|
128个US-ASCII字符 |
只需一个字节编码 |
拉丁文等字符 |
只需两个字节编码 |
大部分常用字(含中文) |
使用三个字节编码 |
其他极少使用的Unicode辅助字符 |
使用四个字节编码 |
4.4 字符解码和编码
方法 | 说明 |
byte[] getBytes(); |
使用默认字符集进行编码 |
byte[] getBytes(String charsetName); |
使用指定字符集(charsetName)进行 |