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