引用自nodejs开发指南的一段话
来源:互联网 发布:新浪微博绑定淘宝店铺 编辑:程序博客网 时间:2024/06/05 22:25
申明:本段内容非原创,引用自《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 数据来处理
- 引用自nodejs开发指南的一段话
- 《nodejs开发指南》学习
- nodejs开发指南读后感
- 读nodejs开发指南
- nodejs的模块引用
- Nodejs开发指南阅读笔记
- Nodejs开发指南阅读笔记
- nodejs开发指南阅读记录
- nodejs开发指南第一篇
- 《Nodejs开发指南》中遇到的问题2
- nodejs开发指南的片段视图替代方案
- 【引用】 VC开发指南
- nodejs 0.12.0 + express 4.13.0 + mongodb 重写 nodejs开发指南的博客实例
- 转自《疯狂的程序员70》的一段话
- 写给自己的一段话 (转自一位博主)
- 一段引用
- NodeJS的文件引用路径
- nodejs开发指南之快速入门
- 第十周练习 1008 偶数求和
- 伙伴算法
- 为什么你的努力一文不值?
- 回车和换行的区别
- cordova 常用命令
- 引用自nodejs开发指南的一段话
- Jquery如何获取Radio的值
- Python变量类型
- 计算机底层实现的一些理解思路
- 双飞翼布局
- iOS中使用 Reachability 检测网络
- DOM零碎知识点归纳
- Apache Commons工具集简介
- 中断处理程序与中断服务例程