简介
Unicode 是一种全球通用的字符编码标准,旨在统一世界上所有书写系统,为每个字符分配唯一的代码。这一标准化有助于在各种数字媒介上交换、处理和显示多语言文本。在 Unicode 推出之前,多种不兼容的编码系统并存,使得不同语言文本的管理变得复杂。Unicode 通过为全球所有字符、符号和表情符号提供一致的表示框架,解决了这一问题。
Unicode 是如何诞生的?
创建通用编码系统的想法诞生于 20 世纪 80 年代末。当时,施乐公司的 Joe Becker 以及苹果公司的 Lee Collins 和 Mark Davis 开始着手开发一种能够取代众多现有且常常不兼容的编码系统的标准。1988 年,Joe Becker 发表了一篇名为”Unicode 88″的文档,阐述了使用 16 位来表示每个字符的通用编码原则,从而可以编码多达 65,536 个字符。
1991 年 1 月,Unicode 联盟在加利福尼亚正式成立,成为一个非营利组织。其主要目标是开发、维护并推广这一标准。联盟至今仍汇聚了 Adobe、Apple、Google、IBM、Microsoft 等科技巨头。

Unicode 官方标志。来源:https://en.m.wikipedia.org/wiki/File:New_Unicode_logo.svg
Unicode 如何发展?
自首次发布以来,Unicode 经历了多次更新。以下是一些重要的里程碑:
- 1.0 版(1991 年):标准首次引入,采用 16 位编码空间,主要覆盖现代书写系统。
- 2.0 版(1996 年):通过”代理对”(surrogate pairs)扩展编码空间,可表示超过一百万个字符。
- 后续版本:逐步增加历史字符、符号、表情符号和新字母,以满足用户日益增长的需求。
Unicode 如何组织?
Unicode 被划分为 17 个”平面”,每个平面包含 65,536 个码点(或唯一字符代码),总计超过一百万个可能的位置。这些平面又根据字符的类型或来源分为不同的区块。
- 基本多文种平面(BMP):最重要且最常用。范围为 U+0000 至 U+FFFF,包含最常见的字符(拉丁文、西里尔文、阿拉伯文、希腊文、中文、日文、韩文等)。
- 补充平面:用于历史字符、稀有语言、表情符号、数学符号或为企业/软件定制的专用区。
每个字符都有一个形如 U+XXXX(十六进制)的码点。存储这些字符时,会使用不同的编码方式(UTF)。
Unicode 有哪些使用方式?

Unicode 转换示例。来源:https://www.bytesroute.com/blog/unicode.html
最常见的 Unicode 编码有:
- UTF-8:最常用,尤其是在互联网上。每个字符用 1 到 4 个字节编码。它与旧的 ASCII 编码兼容,便于迁移。
- UTF-16:主要被 Windows 使用,每个字符用 2 或 4 个字节编码。对于使用大量字符的亚洲语言更高效。
- UTF-32:每个字符用 4 个字节。对计算机来说很简单,但占用更多内存。
为什么 Unicode 如今如此重要?
在 Unicode 之前,每种语言都有自己的编码系统,导致软件、网站或文档之间存在许多兼容性问题。Unicode 实现了统一。
如今,Unicode 对于以下方面至关重要:
- 在同一设备或网站上显示所有语言的文本。
- 无误地发送表情符号或特殊字符。
- 开发可在全球范围内运行的应用程序。
几乎所有现代操作系统(Windows、macOS、Android、iOS)、网页浏览器和编程语言都原生支持 Unicode。
Unicode 面临哪些挑战?
Unicode 非常强大,但仍面临一些挑战:
- 需要不断添加新字符、表情符号或古老文字。
- 有时同一个字符可以有多种表示方式(如变音符号),这在比较文本时可能带来问题。
- 某些复杂字母表的显示需要非常技术性的规则。
Unicode 联盟持续致力于根据数字世界的需求改进和发展该标准。
总结:Unicode 有什么用?
Unicode 让我们能够在任何语言或平台上以通用方式书写、显示和传输文本。正因为有了 Unicode,我们才能阅读日文推文、用带重音的字符发送邮件、开发多语言网站或在消息中插入表情符号。
Unicode 是所有数字文本的共同语言。
来源:
- https://en.wikipedia.org/wiki/Unicode
- https://home.unicode.org/
- https://unicode.org/faq/
- https://developer.mozilla.org/en-US/docs/Glossary/Unicode
- https://www.unicode.org/standard/WhatIsUnicode.html
- https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/