Unicode介绍
首先要理解三个概念,字符、码点、编码方案。
-
字符,比如A、汉、&、@等一个个表音或表意的符号。
-
码点,是为每个字符制定的一个编号,用十六进制表示。比如A的码点为U+0041。
-
编码方案,即将码点转换为二进制格式进行存储或传输的方案。
比如UTF-8,用1~4个字节存储码点。
A的码点为U+0041,用1个字节表示为0x41。
汉的码点为U+6C49,用3个字节表示为0xE6 0xB1 0x89。
Unicode是无处不在的文字桥梁。
比如,操作系统的多语言界面切换,网页中多语言同时展示,Java等编程语言中不同字符集编码的转换等,都基于Unicode实现。
Java如何将GBK编码的文本,转为UTF8编码的文本?
JVM内置了GBK编码的字符集实现(sun.nio.cs.ext.GBK,属于Java扩展字符集),包含GBK的字节序列→Unicode码点映射表。
以此将读取的GBK字节流,先转换为Unicode码点序列,再转换为UTF8编码文本。