0

0

每个 JavaScript 开发者都该懂的 Unicode

高洛峰

高洛峰

发布时间:2016-10-15 11:52:36

|

1424人浏览过

|

来源于php中文网

原创

目录:

1 Unicode背后的思想

2 Unicode基本概念

2.1 字符与代码点

2.2 Unicode平面

立即学习Java免费学习笔记(深入)”;

2.3 码元

2.4 代理对

2.5 组合用字符

3 JavaScript中的Unicode

3.1 转义序列

3.2 字符串比较

3.3 字符串长度

3.4 字符定位

3.5 正则匹配

4 结语

1. Unicode背后的思想

首先问一个最基础的问题:你是怎样阅读并理解这篇文章的?答案很简单,因为你明白这些字以及由字组成的单词的含义。

那你又是如何明白这些字的含义的呢?答案也很简单,因为你(读者)和我(作者)对于这些(呈现在屏幕上的)图形与汉字(即含义)之间的联系有着相同的认知。

对计算机来说这个原理也差不多,只有一点不同:计算机不懂这些字(字母)的含义,只是将其理解为特定的比特序列。

让我们设想一个情景:计算机User1向计算机User2发送一条消息'hello'。

计算机并不知道这些字母的含义。所以计算机User1将消息'hello'转换为一串数字序列0x68 0x65 0x6C 0x6C 0x6F,每个字母对应一个数字:h对应0x68, e对应0x65,等等。

接着将这些数字发送给计算机User2。

计算机User2收到数字序列0x68 0x65 0x6C 0x6C 0x6F后,使用同一套字母与数字的对应关系重建消息内容,'hello'就能正确地显示出来了。

不同计算机之间对字母与数字之间对应关系的协议就是Unicode进行标准化的结果。

根据Unicode,h是一个名为LATIN SMALL LETTER H的抽象字符。这个抽象字符对应数字0x68,也就是一个标记为U+0068的代码点。这些概念将在下一章中说明。

Unicode的作用就是提供一个抽象字符列表(字符集),并给每一个字符分配一个独一无二的标识符代码点(编码字符集)。

2. Unicode基本概念

www.unicode.org网站提到:

Unicode为每一个字符分配一个专有的数字

不分平台

不分程序

不分语言

Unicode是一个世界通用的字符集,它定义了全世界大部分书写体系的字符集,并为每一个字符分配了一个独一无二的数字(代码点)。

Unicode囊括了大部分现代语言、标点符号、附加符号(变音符)、数学符号、技术符号、箭头和表情符号等。

Unicode第一版1.0于1991年10月发布,包含7161个字符。最新版9.0(2016年6月发布)则提供了128172个字符的编码。

Unicode的通用性与开放性解决了过去一直存在的一个问题:供应商们各自实现不同的字符集和编码规则,很难处理。

创建一个支持所有字符集和编码规则的应用是十分复杂的。更不用说你选用的编码可能不支持所有你需要的语言。

海外代购系统源码
海外代购系统源码

该软件是一个以asp+access进行开发的代购企业网站源码。代购优势:随着经济全球化与互联网的发展,带动了许多新新行业,也不缺少成功的案例,淘宝只是其中的一个。而在物流行业中,像代购网站和转运网站都是非常有发展潜力的,消费者可以通过代购网站买到在国内买不到的东西,并且价格也会相对便宜,这些都是代购的优势。代购方式包括有:代购、直购、团购、秒杀、拼单等,首先由客户提交代购订单,然后进行物流选择,可

下载

如果你觉得Unicode很难,那就想想如果没有它编程会更难。

我还记得从前随机选择所需的字符集和编码规则去读取文件内容的时候。全靠人品啊!

2.1 字符与代码点

抽象字符(即文本字符)是用来组织、管理或表现文本数据的信息单位。

Unicode中的字符是一个抽象概念。每一个抽象字符都有一个对应的名称,例如LATIN SMALL LETTER A。该抽象字符的图像表现形式(glyph)是a。(译者注:glyph即图像字符)

代码点是指被分配给某个抽象字符的数字

代码点以U+的形式表示,U+是代表Unicode的前缀,而是一个16进制数。例如U+0041和U+2603都是代码点。

代码点的取值范围是从U+0000到U+10FFFF。

记住代码点就是一个简单的数字。思考有关Unicode的问题时要记得这一点。

代码点就好像数组元素的下标。

Unicode的神奇之处就在于将代码点与抽象字符关联起来。例如U+0041对应的抽象字符名为LATIN CAPITAL LETTER A (表现为A),而U+2603对应的抽象字符名为SNOWMAN(表现为☃)

注意,并非所有的代码点都有对应的抽象字符。可用的代码点有114112个,但分配了抽象字符的只有128237个。

2.2 Unicode平面

立即学习Java免费学习笔记(深入)”;

平面是指从U+n0000到U+nFFFF的区间,也就是65536(1000016)个连续的Unicode代码点,n的取值范围是从016到1016。

这些平面将Unicode代码点分为17个大小相等的集合:

平面0包含从U+0000到U+FFFF的代码点

平面1包含从U+**1**0000到U+**1**FFFF的代码点

...

平面16包含从U+**10**0000到U+**10**FFFF的代码点

1.png

基本多文种平面

平面0比较特殊,被称为基本多文种平面或简称BMP。它包含了大多数现代语言的字符 (基本拉丁字母, 西里尔字母, 希腊字母等)和大量的符号。

如上文所述,基本多文种平面的代码点取值范围是从U+0000到U+FFFF,最多可以有4位16进制数字。

大多数时候开发者处理的都是BMP中的字符。它包含了大多数情况下的必需字符。

BMP中的一些字符:

e对应代码点U+0065 抽象字符名: LATIN SMALL LETTER E

|对应代码点U+007C 抽象字符名: VERTICAL BAR

■对应代码点U+25A0 抽象字符名: BLACK SQUARE

☂对应代码点U+2602 抽象字符名: UMBRELLA

星光平面

BMP之后的16个平面(平面1,平面2,…,平面16)被称为星光平面或辅助平面。

星光平面的代码点被称为星光代码点。这些代码点的取值范围是从U+10000到U+10FFFF。

星光代码点可能会有5位或6位16进制数字:U+ddddd或U+dddddd。

来看几个星光平面里的字符:

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

79

2026.01.09

c++框架学习教程汇总
c++框架学习教程汇总

本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。

46

2026.01.09

学python好用的网站推荐
学python好用的网站推荐

本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。

121

2026.01.09

学python网站汇总
学python网站汇总

本专题整合了学python网站汇总,阅读专题下面的文章了解更多详细内容。

12

2026.01.09

python学习网站
python学习网站

本专题整合了python学习相关推荐汇总,阅读专题下面的文章了解更多详细内容。

15

2026.01.09

俄罗斯手机浏览器地址汇总
俄罗斯手机浏览器地址汇总

汇总俄罗斯Yandex手机浏览器官方网址入口,涵盖国际版与俄语版,适配移动端访问,一键直达搜索、地图、新闻等核心服务。

71

2026.01.09

漫蛙稳定版地址大全
漫蛙稳定版地址大全

漫蛙稳定版地址大全汇总最新可用入口,包含漫蛙manwa漫画防走失官网链接,确保用户随时畅读海量正版漫画资源,建议收藏备用,避免因域名变动无法访问。

370

2026.01.09

php学习网站大全
php学习网站大全

精选多个优质PHP入门学习网站,涵盖教程、实战与文档,适合零基础到进阶开发者,助你高效掌握PHP编程。

45

2026.01.09

php网站搭建教程大全
php网站搭建教程大全

本合集专为零基础用户打造,涵盖PHP网站搭建全流程,从环境配置到实战开发,免费、易懂、系统化,助你快速入门建站!

12

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

光速学会docker容器
光速学会docker容器

共33课时 | 1.9万人学习

JavaScript 经典案例
JavaScript 经典案例

共15课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号