字符编码(四)ASCII,Unicode,UCS,UTF,字符&&字符编码集
1、理解
byte是唯一实现,真实的存在
char,int,short,是各种语义抽象(人,计算机对byte的语义分析,借用编译原理的概念)
String,Java由char组成,但最终还是以Bytes形式存在
2、ASCII字符集编码
7位编码(最高位忽略无效),编码范围是0x00-0x7F。共128个字符(4位二进制==一位16进制)
0A LF (NL line feed, new line) 换行键
0D CR (carriage return) 回车键(运输返回)
30 0
41 A
61 a
<CR><LF>源自电传打字机Teletype,<CR>打字机把打印头定位在左边界, <LF>打字机把纸向下移一行。
Unix 每行结尾"\n", Windows每行结尾"\r\n",分歧。
3、Unicode(Universal code)
任何文字(char)在中都对应一个值(code point),代码值格式:U+ABCD
unicode 3.0: ISO/IEC 10646-1, support 49,259 chars, Basic Multilingual Plane(基本多文种平面)
Unicode 3.1:ISO/IEC 10646-2, support 94,205 chars, Supplementary Planes(定义的辅助平面)
UTF-8(1-4个字节)仅支持unicode3.0, 表示unicode3.0+,需要更多个字节?
中日韩编码范围:4E00-9FBF:CJK 统一表意符号 (CJK Unified Ideographs)
3.1、UCS(Universal Character Set)
文字(char)和代码点之间的对应关系(抽象),没有规定如何存储(实现)
UCS-2(UCS coded in 2 octets)代码值范围U+0000~U+FFFF
UCS-4(UCS coded in 4 octets)代码值范围U+00000000~U+7FFFFFFF
U+7FFFFFFF = 2^7(最高位为0,group) * 2^8(plane面) * 2^8(row) * 2^8(cell码元)
BMP(Basic Multilingual多语言 Plane): group0,plane0 , BMP前2个字节全0,后两个字节对应UCS-2
3.2、UTF(Unicode Transformation Format)
规定code point在计算机中如何存储
BOM: Byte Order Mark, 值:FEFF
3.3、UFT-8, 用8bit作为最小单元,没有字节序问题,但仍然可以有BOM: EFBBBF
变长(1-4字节),兼容ASCII
3.4、UTF-8映射unicode
Unicode编码(16进制) ║ UTF-8 字节流(二进制) 有效bit数
000000 - 00007F ║ 0xxxxxxx 7bit//ASCII字母继续使用1字节储存
000080 - 0007FF ║ 110xxxxx 10xxxxxx 11bits//希腊字母
000800 - 00FFFF ║ 1110xxxx 10xxxxxx 10xxxxxx 16bits//汉字等
010000 - 10FFFF ║ 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 22bits//辅助平面字符
BOM: EFBBBF 推导
FEFF(11111110,11111111)
转换规则: 1110xxxx 10xxxxxx 10xxxxxx
EF,BB,BF(11101111, 10111011, 10111111)
3.5、UTF-16,用16bit作为最小单元,2个字节,必然有字节序问题
对 UCS-2 用2B直接保存。
对UCS-4 用4B直接保存
不兼容ASCII,固定长度,浪费资源,但速度快
UTF-16LE-BOM: FF FE (windows默认)
UTF-16BE-BOM: FE FF
3.6、UTF-32 对应UCS-4 用4B直接保存,固定长度,浪费资源
3.7、实例:"汉字a\r\n"(unicode: U+6C49,U+5B57,U+0061,U+000D,U+000A),windows7下对应的各种编码。
ASCII
BABAD7D6 610D0A
UTF-8(deflaut: 带BOM)
EFBBBF E6B189E5AD97 610D0A
UTF-16
FFFE 496C575B 61000D000A00
UTF-16-big edn
FEFF 6C495B57 0061000D000A
Unicode-ascii escaped
\uFEFF\u6C49\u5B57a