首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么JavaScript的字符串使用UTF-16,但是一个字符的实际大小可以是一个字节?

为什么JavaScript的字符串使用UTF-16,但是一个字符的实际大小可以是一个字节?
EN

Stack Overflow用户
提问于 2022-07-03 18:02:12
回答 2查看 94关注 0票数 0

根据这篇文章

在内部,JavaScript源代码被看作是UTF-16代码单元的序列.

这个IBM doc说说:

UTF-16是基于16位代码单元的.因此,每个字符可以是16位(2字节)或32位(4字节)。

但我在Chrome的控制台上测试,英文字母只占1字节,而不是2或4个字节。

new Blob(['a']).size === 1

我想知道为什么会这样?我是不是漏掉了什么?

EN

回答 2

Stack Overflow用户

发布于 2022-07-03 18:10:06

在内部,JavaScript源代码被看作是UTF-16代码单元的序列.

请注意,这是指源代码,而不是字符串值。本文后面引用的字符串值也是UTF-16:

当一个字符串包含实际文本数据时,每个元素被认为是一个UTF-16代码单元。

这里的差异实际上存在于Blob构造函数中。来自MDN

请注意,这里的字符串编码为UTF-8,与通常的JavaScript UTF-16字符串不同.

票数 5
EN

Stack Overflow用户

发布于 2022-07-03 18:03:53

UTF有不同的字符大小。

a的大小为1字节,但ą有2字节。

代码语言:javascript
运行
复制
console.log('a', new Blob(['a']).size)
console.log('ą', new Blob(['ą']).size)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72848799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档