我在某些地方读到 JavaScript 字符串是 UTF-16,而在其他地方它们是 UCS-2。我做了一些搜索以试图找出差异并发现:
问:UCS-2 和 UTF-16 有什么区别?
答:UCS-2 是一个过时的术语,它指代 Unicode 1.1 之前的 Unicode 实现,在代理代码点和 UTF-16 被添加到标准的 2.0 版之前。现在应该避免使用这个术语。
UCS-2 没有定义不同的数据格式,因为 UTF-16 和 UCS-2 在数据交换方面是相同的。两者都是 16 位,并且具有完全相同的代码单元表示。
有时在过去,一个实现被标记为“UCS-2”,以表明它不支持补充字符并且不将代理代码点对解释为字符。这样的实现不会处理补充字符的字符属性、代码点边界、排序规则等。
通过:http : //www.unicode.org/faq/utf_bom.html#utf16-11
所以我的问题是,是不是因为 JavaScript 字符串对象的方法和索引作用于 16 位数据值而不是字符,所以有些人认为它是 UCS-2?如果是这样,一个面向字符而不是 16 位数据块的 JavaScript 字符串对象会被视为 UTF-16 吗?或者还有什么我想念的吗?
编辑:根据要求,这里有一些消息来源说 JavaScript 字符串是 UCS-2:
http://blog.mozilla.com/nnethercote/2011/07/01/faster-javascript-parsing/ http://terenceyim.wordpress.com/tag/ucs2/
编辑:对于可能遇到此问题的任何人,请务必查看此链接: