引用自nodejs开发指南的一段话

原创 2015年11月18日 13:41:54

     申明:本段内容非原创,引用自《nodejs开发指南》。

       Node.js 不支持完整的Unicode,很多字符无法用string 表示。公平地说这不是Node.js 的缺陷,而是JavaScript 标准的问题。目前JavaScript 支持的字符集还是双字节的UCS2,即用两个字节来表示一个Unicode 字符,这样能表示的字符数量是65536。显然,仅仅是汉字就不止这个数目,很多生僻汉字,以及一些较为罕见语言的文字都无法表示。这其实是一个历史遗留问题,像2000 年问题(俗称千年虫)一样,都起源于当时人们的主观判断。最早的Unicode 设计者认为65536个字符足以囊括全世界所有的文字了,因此那个时候盲目兼容Unicode 的系统或平台(如Windows、Java 和JavaScript)在后来都遇到了问题。 
        Unicode 随后意识到2个字节是不够的,因此推出了UCS4,即用4 个字节来表示一个Unicode 字符。很多原先用定长编码的UCS2 的系统都升级为了变长编码的UTF-16,因为只有它向下兼容UCS2。UTF-16 对UCS2 以内的字符采用定长的双字节编码,而对它以外的部分使用多字节的变长编码。这种方式的好处是在绝大多数情况下它都是定长的编码,有利于提高运算效率,而且兼容了UCS2,但缺点是它本质还是变长编码,程序中处理多少有些不便。
        许多号称支持UTF-16 的平台仍然只支持它的子集UCS2,而不支持它的变长编码部分。相比之下,UTF-8 完全是变长编码,有利于传输,而UTF-32 或UCS4 则是4 字节的定长编码,有利于计算。
        当下的JavaScript 内部支持的仍是定长的UCS2 而不是变长的UTF-16,因此对于处理UCS4 的字符它无能为力。所有的JavaScript 引擎都被迫保留了这个缺陷,包括V8 在内,因此你无法使用Node.js 处理罕见的字符。想用Node.js 实现一个多语言的字典工具?还是算了吧,除非你放弃使用string 数据类型,把所有的字符当作二进制的Buffer 数据来处理

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

js循环显示一段话

  • 2013年10月18日 16:48
  • 2KB
  • 下载

Note7:String regionMatches查询一段话里有没有关键字 indexOf值得注意的地方

Srring 有很多方法   如s.length     equals

从论坛里抄录的一段话

对学习编程者的忠告: 多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程! 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步Debug版对应汇编...

一段话中手机号中间四位做特殊处理

手机号做特殊处理,中间四位替换为*
  • a_302
  • a_302
  • 2016年08月11日 20:04
  • 864

苹果广告词:一直以来让我深有感触的一段话

他们特立独行。他们桀骜不驯。他们惹是生非。他们格格不入。他们用与众不同的眼光看待事物。他们不喜欢墨守成规。他们也不愿安于现状。你可以认同他们,反对他们,颂扬或是诋毁他们。但唯独不能漠视他们。因为他们改...

转载一篇仅就其中一段话来迁强说明人工智能在思维与潜意识之间的关联

转载一篇仅就其中一段话来迁强说明人工智能在思维与潜意识之间的关联
  • sleks
  • sleks
  • 2014年04月22日 10:17
  • 1335

80后-刚从班级群看到的一段话

我还在想象着我的18岁,可我却马上30岁了!真的吗?不愿意去想,但不得不面对。曾经的年少轻狂,早已荡然无存。曾经的花样年华,早已悄然而逝。80后的我们已经开始站在了20岁的尾巴上,面对三十而立,还有多...

华为2017校园招聘编程题——去除一段话字符串中重复单词

输入一行字符串语句,将其中重复单词(单词大小写区分)剔除,仅保留第一次出现的。不考虑符号。...

Nodejs开发指南阅读笔记

第一章 Node.js简介          第二章 安装和配置Node.js 1、Node.js是一个让Javascript运行在服务端的开发平台。 2、Node.js中所谓的Javascrip...
  • mxy1234
  • mxy1234
  • 2015年05月21日 11:22
  • 214
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:引用自nodejs开发指南的一段话
举报原因:
原因补充:

(最多只允许输入30个字)