Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确定Javascript UTF-16字符串的字节大小_Javascript_String - Fatal编程技术网

如何确定Javascript UTF-16字符串的字节大小

如何确定Javascript UTF-16字符串的字节大小,javascript,string,Javascript,String,在Firefox插件中,我将长字符串缓存到磁盘。我希望能够让用户了解这些字符串占用了多少磁盘空间(以字节为单位) 我知道Javascript将字符串存储为UTF-16。如果UTF-8字符串保存在变量中,则将其转换为UTF-16。因此,确定字符串大小的UTF-8方法在这里不起作用 根据此参考: 它指出string.length的值实际上是UTF-16代码单元的数量,而不是字符的数量 由此我推断,以字节为单位的磁盘空间应该是string.length*2。我想确认我的假设是否正确 编辑: (对标题

在Firefox插件中,我将长字符串缓存到磁盘。我希望能够让用户了解这些字符串占用了多少磁盘空间(以字节为单位)

我知道Javascript将字符串存储为UTF-16。如果UTF-8字符串保存在变量中,则将其转换为UTF-16。因此,确定字符串大小的UTF-8方法在这里不起作用

根据此参考:

它指出
string.length
的值实际上是UTF-16代码单元的数量,而不是字符的数量

由此我推断,以字节为单位的磁盘空间应该是
string.length*2
。我想确认我的假设是否正确

编辑:

(对标题和原文进行了多次编辑。此外,还包括以下内容:)


有人建议这是一个复制品。但是,这并不能解决我的问题,因为它涉及获取UTF-8字符串大小的方法,但是Javascript在存储UTF-8字符串时会将其转换为UTF-16。例如,占用3个字节的UTF-8字符在转换为UTF-16时可能只使用2个字节(1个UTF-16代码单位)。

您遗漏了句子的一部分“…使用单个16位代码单位表示最常见的字符…”,因此,不,您的假设不正确。这是否回答了您的问题@HereticMonkey和另一部分…但是对于不太常用的字符,需要使用两个代码单元,因此长度返回的值可能与字符串中的实际字符数不匹配。关键是,string.length计算的是代码单位,而不是字符。所以,请确切地告诉我,你所包含的陈述是如何使我的假设无效的。@Hereticsmonkey好吧,不是真的。它主要讨论字符串中UTF-8字节的数量,而Javascript将字符串存储为UTF-16。副本上有13个答案。