世界微尘里,吾宁爱与憎
Unicode和Char类型
Unicode和Char类型

Unicode和Char类型

在Java核心技术卷一3.3.4 Unicode和char类型中有这么一段话,下面利用一些专用术语来解释Java语言从Java 5开始如何解决这个问题。

码点( codepoint)是指与一个编码表中的某个字符对应的代码值。在Unicode标准中,码点采用十六进制书写,并加上前缀U+,例如U+0041就是拉丁字母A的码点。Unicode的码点可以分成17个代码平面( code plane)。第一个代码平面称为基本多语言平面( basic multilingual plane),包括码点从U+0000到U+FFFF 的“经典”Unicode代码;其余的16个平面的码点为从U+10000到U+10FFFF,包括辅助字符(supplementary character)。

UTF-16编码采用不同长度的编码表示所有Unicode码点。在基本多语言平面中,每个字符用16位表示,通常称为代码单元(code unit);而辅助字符编码为一对连续的代码单元。采用这种编码对表示的各个值落入基本多语言平面中未用的2048个值范围内,通常称为替代区域( surrogate area) ( U+D800~U+DBFF用于第一个代码单元,U+DC00~U+DFFF用于第二个代码单元)。这样设计十分巧妙,我们可以从中迅速知道一个代码单元是一个字符的编码,还是一个辅助字符的第一或第二部分。

在Java 中,char类型描述了UTF-16编码中的一个代码单元。 我们强烈建议不要在程序中使用char类型,除非确实需要处理UTF-16

这段话着实令人费解,关于其中的Unicodew我询问了一下ChatGPT,他给出了这样的回答

翻译成通俗易懂的语言,就是说,Java默认使用UTF-16的编码格式,也就是说在Java中,一个char类型的字符占16位,即两字节。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注