浅谈Unicode

本文详细介绍了Unicode的概念,包括码点、平面(BMP和SP)、UTF-16的代理区编码以及UTF-8的编码方式。讲解了码点的表示形式和取值范围,特别强调了UTF-16采用代理对来处理超过16位的字符,同时探讨了UTF-8如何通过变长编码避免搜索匹配难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提到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 大小的部分,这里面的每一个部分就是一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值