字符编码解惑(持续更新…)

62 阅读1分钟

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编码文本。