【发布时间】:2012-02-01 17:05:06
【问题描述】:
我在某些地方读到 JavaScript 字符串是 UTF-16,而在其他地方它们是 UCS-2。我做了一些搜索以试图找出差异并发现:
问:UCS-2 和 UTF-16 有什么区别?
答:UCS-2 是过时的术语,指的是 Unicode 最高 Unicode 1.1 的实现,在代理代码点和 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/
编辑:对于可能遇到此问题的任何人,请务必查看此链接:
【问题讨论】:
标签: javascript utf-16