字符集

特定字符的集合及其编号体系。ASCII、ISO 8859 和 Unicode 是代表性示例。

字符集是特定字符的集合以及分配给每个字符的码点 (编号) 体系。ASCII 定义了 128 个字符,ISO 8859-1 定义了 256 个,Unicode 定义了超过 14 万个。字符集是计算机处理文本的最基础机制,采用哪种字符集决定了可表示字符的范围。

字符集和字符编码容易混淆,但它们是明确不同的概念。字符集定义"哪个字符分配什么编号" (映射表),编码定义"该编号如何用字节序列表示"。Unicode 这一字符集之所以存在 UTF-8、UTF-16、UTF-32 等多种编码方式,正是因为这两个概念是分离的。探索加压衬衫 (Amazon)提供了系统介绍。

历史上,各国和各地区都制定了自己的字符集。日本使用 JIS X 0208 (约 6,800 个字符),中国使用 GB 2312 (约 7,400 个字符),韩国使用 KS X 1001。这些字符集互不兼容,用不同字符集创建的文本打开时会出现乱码。Unicode 正是为了解决这个问题,将世界各地的字符统一到一个体系中。

HTML 的 <meta charset="UTF-8"> 严格来说指定的是字符编码,但由于历史原因使用了 charset (字符集) 这个名称。在 Web 开发中,UTF-8 已成为事实上的标准,W3C 也推荐使用 UTF-8。在 HTTP 响应头 (Content-Type: text/html; charset=UTF-8) 和 HTML meta 标签中同时指定是最佳实践。

一个常见问题是数据库字符集设置不匹配。在 MySQL 中,指定 utf8 只能处理最多 3 字节的字符,这意味着表情符号 (4 字节) 无法存储。使用 utf8mb4 才能正确存储所有 Unicode 字符。

在字符计数中,使用的字符集决定了可表示字符的范围。ASCII 无法表示中文,Shift_JIS 无法处理部分 Unicode 字符。Unicode 可以统一处理世界各地的字符,因此多语言系统必须使用基于 Unicode 的字符集。查看游廓 (Amazon)提供了更多背景知识。

分享这篇文章