什么是 Unicode 和 UTF-16

Unicode 和 UTF-16
我们已经知道字符串是字符序列。

计算机处理器内部发生的一切都是数字计算。字符串处理、图像处理、音频处理、视频处理——实际上一切都围绕着数字展开。

对于字符串中的字符,每个字符也都与一个特定的数字相关联。这种关联由所使用的字符集决定。

字符集可以被认为是一个包含字符名称及其相关数字的表。

如今,计算机中已存在众多已知甚至仍在使用的字符集,每种字符集都有其自身的传承。ASCII 无疑是迄今为止最流行的字符集之一,其历史可以追溯到计算机诞生之初。

在 ASCII 中,英文字母中的小写字母 ‘a’ 与数字 97 相关联。大写字母 ‘A’ 与数字 65 相关联。同样,小写字母 ‘b’ 是 98,而大写字母 ‘B’ 是 66。空格字符是 32。

字符编码方案是在计算机上对字符进行编码和解码的系统。

一个更好、更流行的替代方案是 UTF-16 。在 UTF-16 编码方案中,每个字符至少占用 16 位。注意,16 位块代表一个代码单元 。毫无疑问,并非所有 Unicode 字符都能用 16 位来存储;我们必须增加存储空间来容纳它们。这就需要用到一些数学知识。UTF-16 是可变长度的,也就是说,有些字符占用一个码元(即 16 位),有些字符占用两个码元(即 32 位)。

在 Unicode 术语中,跨越两个代码单元的字符被表示为代理对 – 一个高代理 值(第一个代码单元)后跟一个低代理 值(第二个代码单元)。

问题在于,UTF-16 中的某些代码单元(即 16 位块)被保留用于特殊含义——有些是高位代理,有些是低位代理。当 UTF-16 解码器遇到高位代理时,它会立即知道也应该读取下一个代码单元,以确定当前字符。

回到 JavaScript,它默认对其字符串类型使用 UTF-16 编码方案 。

因此,Unicode 是使用的字符集。这样,JavaScript 中给定字符串中的每个字符占用 16 位或 32 位,具体取决于字符本身。

所以从 JavaScript 的角度来看,字符串是无符号的 16 位整数序列 。

换句话说,JavaScript 字符串是 Unicode 代码单元(无符号 16 位整数)的序列。在使用字符串时,务必牢记这一定义。

UTF-16 解码器(将字符转换为数字)将给定的字符串读取为 16 位整数数组,并处理每个代码单元以确定应该输出的相应字符。

所以最后,我们现在了解了 JavaScript 中 “字符” 的含义,即它是一个基于 UTF-16 格式的跨越 16 位或 32 位的无符号整数。

欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » 什么是 Unicode 和 UTF-16

提供最优质的资源集合

立即查看 了解详情