我一直在努力理解为什么JavaScript中到处都需要进行UTF-8编码/解码,后来我了解到JavaScript使用UTF-16编码。
所以我想这也是utf8.js等库存在的原因,用于在UTF-16和UTF-8之间转换。
但最后他提供了一些见解:
那让我想起了HTML在Node中进行编码非常令人困惑,并且难以正确处理。当你意识到Javascript字符串类型将始终被编码为UTF-16时,以及大多数其他地方RAM中的字符串与套接字,文件或字节数组交互时,该字符串将被重新编码为UTF-8,这是有帮助的。
当然,所有这些都非常低效。大多数字符串可以表示为UTF-8,并且使用两个字节表示它们的字符意味着您正在使用比所需更多的内存,以及支付重新编码字符串的O(n)税,每次遇到HTTP或文件系统边界时。
<head>
中的 <meta charset=“utf-8”>
, 除了“你需要这个才能使文本正常工作”之外,我从未对此过多思考。现在我在想,这个问题是关于什么的,如果那个<meta charset=“utf-8”>
标签告诉 JavaScript 进行 UTF-8 编码,那么当你在 JavaScript 中创建字符串时,它们将是 UTF-8 编码而不是 UTF-16。或者如果我理解错误,它到底是在做什么。如果它告诉 JavaScript 使用 UTF-8 编码而不是 UTF-16(我猜这被认为是“默认值”),那么这意味着你不需要支付执行 UTF-8 和 UTF-16 之间转换的 O(n) 税,这将带来性能提升。想知道我是否理解正确,或者如果不是,那我错在哪里。