提到Unicode,我们的第一反应一定是----它是一种编码,其实不然,今天我们来说说Unicode到底是个啥
首先说说什么是Unicode、码点,要想搞懂,有些概念必须清楚
什么是Unicode?
Unicode编码定义了这个世界上几乎所有字符(就是你眼睛看的字符比如ABC,汉字等)的数字表示,而且Unicode还兼容了很多老版本的编码规范,例如大家熟悉的 ASCII码。
什么是码点?
我们国家的每一个人都对应唯一的一个身份证号,而Unicode也为了每个字符发了一张身份证,这张“身份证”上有一串唯一的数字ID确定了这个字符。
这串数字在整个计算机的世界具有唯一性,Unicode给这串数字ID起了个名字叫[码点]。
码点是如何表示的?
U+XXXXXX 是码点的表示形式,X 代表一个十六制数字,可以有 4-6 位,不足 4 位前补 0 补足 4 位,超过则按是几位就是几位。
字符A的ASCII码,众所周知是65,将65转换成16进制就是41,按照规则前面补0,那么字符A的码点表示就是U+0041,依次类推B的码点表示就是U+0042...等等,汉字"你"的字符表示是“U+4F60”...
这里分享一个转unicode码点的网址:码点转换
可以在网站里看到很详细的字符
码点的取值范围
码点的取值范围目前是 U+0000 ~ U+10FFFF,理论大小为 10FFFF+1=110000(为什么+1,因为从0开始)。
16机制,后一个 1代表是 65536(16的4次方),因为是 16 进制,所以前一个 1 是后一个 1 的 16 倍,所以总共有1×16+1=17 个的 65536 的大小,粗略估算为 17×6万=102 万,所以这是一个百万级别的数。
为了更好分类管理如此庞大的码点数,把每 65536 个码点作为一个平面,总共 17 个平面。
而代理区就在平面里面,而平面又有很多讲究。
平面,BMP,SP
什么是平面?
由前面可知,码点的全部范围可以均分成 17 个 65536 大小的部分,这里面的每一个部分就是一个