首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript字符串- UTF-16 vs UCS-2?

JavaScript字符串- UTF-16 vs UCS-2?
EN

Stack Overflow用户
提问于 2012-01-03 17:13:25
回答 4查看 11.7K关注 0票数 27

我在一些地方读到过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“,以表明它不支持补充字符,并且不将代理代码点对解释为字符。这样的实现不会处理字符属性、代码点边界、排序规则等补充字符的处理。

via:#utf16 16-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/

编辑:对于任何可能遇到这种情况的人,一定要查看以下链接:

http://mathiasbynens.be/notes/javascript-encoding

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-03 17:39:28

严格地说,JavaScript是Unicode2.0之前的ECMAScript,所以在某些情况下,您可能会发现对UCS-2的引用仅仅是因为在编写引用时这是正确的。你能指出JavaScript的具体引文是"UCS-2“吗?

ECMAScript版本的规范3.5至少都显式地声明了一个String是一个无符号16位整数的集合,并且如果将这些整数值表示为文本数据,那么它们就是UTF-16代码单元。看见

编辑:我不再确定我的答案是完全正确的。请参阅上面提到的优秀文章,它本质上说,虽然JavaScript引擎可能在内部使用UTF-16,而且大多数使用UTF-16,但语言本身实际上就像它们是UCS-2一样公开了这些字符。

票数 19
EN

Stack Overflow用户

发布于 2012-01-03 17:25:08

是UTF-16/USC-2。它可以处理代理对,但是charAt/charCodeAt返回一个16位字符,而不是Unicode编码点。如果您想让它处理代理项对,我建议快速阅读

票数 7
EN

Stack Overflow用户

发布于 2012-01-03 17:17:55

它只是一个16位的值,没有在ECMAScript标准中指定编码。

请参阅本文档中的7.8.4节字符串文字:http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf

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

https://stackoverflow.com/questions/8715980

复制
相关文章

相似问题

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