gpt4 book ai didi

javascript - 什么时候 JavaScript 字符可以占用 2 个代码单元,代码单元到底是什么?

转载 作者:行者123 更新时间:2023-11-29 18:11:04 25 4
gpt4 key购买 nike

我今天读了:

The length property of a string counts the number of "code units" in a string. In the majority of cases, one character uses one code unit, but some of the rarely used characters take up two

请有人能确切地解释什么是“代码单元”,最好是深入的解释,以及我在哪里可以找到适合 2 类别的字符?如果您在某处知道的话,最好是表格资源!

非常感谢。

最佳答案

能用8位数据明确表示的字符很少,所以出现了将字符映射到多个字节的编码。与各种 Unicode 编码一样,一个字符可以是 1 个字节或一个序列中的多个字节。

因此,代码点是表示单个字符的一组 1 个或多个字节的术语。

字符 "世界" 以像 UTF-8 这样的编码为例,每个字符将占用多个字节,但 JavaScript 中的字符串将返回 .length2

var s = "世界";

document.querySelector("pre").textContent = "char | index | base-10 | binary\n"
document.querySelector("pre").textContent +="-------------------------------------\n"

for (var i=0; i < s.length; i++) {
var cc = s.charCodeAt(i);
document.querySelector("pre").textContent +=
s[i] + " | " + i + " | " + cc + " | " + to_binary(cc) + "\n";
}

function to_binary(n) {
return pad(n.toString(2)).replace(/(\d{8})/g, "$1 ");
}

function pad(s) {
return ("0000000" + s).slice(-(s.length + (8-(s.length%8))));
}
<pre></pre>

因此您可以看到 .charCodeAt() 调用揭示了一个数字表示,它甚至无法接近适合 8 位数据。因此,字符由多个字节表示。

关于javascript - 什么时候 JavaScript 字符可以占用 2 个代码单元,代码单元到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27386827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com