在Java中,一个char类型变量大多数情况下可以存储一个字符,但是有的时候却不可以。要想搞清楚原因,就需要了解到字符集、字符编码、码点和代码单元等等概念。本文将逐一解释这些概念。
什么是字符集
我们日常生活中所使用的文字,在存储到计算机中的时候需要使用二进制的形式,通俗地来说就是一个字符要唯一对应一个数字。字符集就用来表达这种对应关系的。这个世界上有很多的字符集,比如说简单的ASCII、国家标准总局发布的GB2312与GB18030以及还在不断发展的Unicode。

Unicode包含了世界上大多数的文字和符号。我们平常聊天时常用的表情符号 – Emoji,就已经被Unicode标准化了,每个表情就代表了一个“文字”。Unicode中,每个字符对应的数字,叫代码值(又叫Code Point, 码点),通常会以”U+”开头,后面跟上一串十六进制数字。比如U+86CB所表示的文字就是中文里的”蛋”。
(更多…)