认识
统一码,Unicode,万国码,单一码,是计算机科学领域里的业界标准,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。简单来说,Unicode 就是个巨大的“字符字典”,它为每个现实世界中的字符分配一个唯一的编号(称为“码点”),无论这个字符来自哪种语言、什么平台、什么程序,以方便计算机程序的处理。
组成
我们可以将 Unicode 理解为一个由三部分构成的完整体系:
- 字典(字符集):一个包含了全球几乎所有字符及其唯一ID(码点)的巨大列表。
- 编码(打包方式):规定了如何将这些ID(码点)转换成二进制数据(字节)以便计算机存储和传输,其中 UTF-8 是最重要的方式。
- 使用说明书(标准附件):提供了关于如何正确显示、处理、比较这些字符的详细规则和数据。】
字符集(核心内容)
这是 Unicode 最基础的部分,即它包含了哪些字符。这些字符来自:
- 现代语言文字:
- 拉丁字母(英文字母A-Z、带重音符号的字母等)
- 汉字(包括简体字、繁体字、日本汉字、韩国汉字等,统一编码,称为“中日韩统一表意文字”)
- 日文(平假名、片假名)
- 韩文(谚文音节)
- 阿拉伯字母
- 梵文字母(天城文等)
- 希腊字母
- 西里尔字母(俄语、保加利亚语等)
- …以及全球绝大多数正在使用的书写系统的字符。
- 历史文字和符号:
- 古埃及象形文字
- 楔形文字
- 甲骨文
- 哥特字母
- 等等。这些主要用于学术研究。
- 符号:
- 标点符号(各种语言的引号、破折号等)
- 数学符号(±, ÷, ∞, ∫, ∑ 等)
- 技术符号(计算机相关符号)
- 几何形状(▲, ◯, ◆ 等)
- 装饰符号(♥, ★, ☺ 等)
- 箭头(→, ←, ↑, ↓ 等)
- 货币符号(¥, £, €, ₿ 等)
- Emoji 表情符号(😀, 🍎, 🚗, 🏳️🌈 等)—— Emoji 也是 Unicode 字符集的一部分!
- 控制字符和格式字符:
- 用于控制文本流向的字符,如“从左至右标记”、“从右至左标记”。
- 零宽连接符、零宽非连接符等,用于复杂文本的渲染(如阿拉伯语连字)。
编码方案(如何存储和传输)
光有字符编号还不够,计算机需要知道如何将这些编号(码点)转换成字节序列进行存储和传输。Unicode 定义了以下几种主要的编码方案:
- UTF-8:目前最主流、最推荐的编码。
- 特点:可变长度(1到4个字节),完美兼容 ASCII(ASCII 字符在 UTF-8 中保持不变)。
- 优点:节省空间(尤其对于英文文本),无字节序问题,是网页(超过98%)、电子邮件、大多数现代操作系统的默认编码。
- UTF-16:
- 特点:使用2个或4个字节表示一个字符。
- 应用:曾是 Windows 操作系统、Java 和 JavaScript 早期版本的内部编码。
- UTF-32:
- 特点:使用固定的4个字节表示每一个字符。
- 优点:简单直观,每个字符长度相同。
- 缺点:非常浪费存储空间和带宽,实际应用较少。
- 其他:如 UCS-2(已过时,被 UTF-16 取代)。
标准附件和数据库(如何正确使用字符)
Unicode 不仅仅是一个字符列表,它还提供了一套庞大的数据库和规则,以确保字符能被正确地显示、处理、比较和排序。
- Unicode 字符数据库:一个包含所有字符属性的文本文件集合,例如:
- 字符的名称
- 字符的类别(是字母、数字、标点等)
- 字符的大小写映射(例如 ‘a’ 和 ‘A’)
- 字符的双向算法属性(用于混合从左至右和从右至左的文字,如阿拉伯语和英语混排)
- Unicode 排序算法:定义了如何根据不同语言和文化的规则对文本进行排序(称为“区域设置敏感排序”)。
- 双向算法:定义了如何显示混合了从左至右(如英文)和从右至左(如阿拉伯文、希伯来文)的文本。
- 文本分段规则:定义了如何确定词、句、行的边界,这对于换行、光标移动和文本选择至关重要。
性质
正是由于 Unicode 的存在,我们才能在一台设备上无障碍地浏览包含多种语言的网页、使用各种表情符号,并在全球范围内进行数字交流。它是实现全球化和信息无障碍共享的基石技术。
参考
百度百科 / 统一码 / https://baike.baidu.com/item/%E7%BB%9F%E4%B8%80%E7%A0%81/2985798
DeepSeek / Unicode 包含哪些内容