首页 > 代码库 > Unicode编码
Unicode编码
Unicode为世界上所有的文字系统的每一个字符单位分配了一个唯一的整数,称为代码点,范围为:0~1114111;
ASCII将每一索引映射为唯一的二进制表示,但Unicode允许多个不同二进制编码的代码点;
不同的编码在要求存储的字符串数量和操作速度之间进行平衡,由此产生如UTF-8,UTF-16,UTF-32;
历史发展:
- 早期由于错误地估算了代码点的容量范围,认为Unicode最多只需要2^16个代码点,而产生了USC-2,为16位编码的原始标准;
- USC-2是由独立的16位代码单元组成的,每个代码单元对应一个单独的Unicode代码点;
- 这种编码的好处在于索引字符串是一种代价小,固定时间的操作;获取某个字符串的第N个代码点只要选取数组的第N个16位元素;(0X0000)
- 结果是许多平台如Java,JavaScript等都采用16位编码的字符串;
- 随后Unicode扩大范围之后,新增加了17个大小为2^16的代码点范围;第一个子范围称为基本多文种平面,其他16个范围称为辅助平面;
- 之后UTF16取代USC-2,其采用代理对表示附加的代码点;一对16位的代码单元共同编码一个等于或大于2^16的代码点;
- 这导致了:
- 代码单元的索引与代码点的索引不同;
- UTF-16是一种可变长度的编码;
- 长度为N的字符串内存大小变化基于该字符串特定的代码点;
- 查找N个代码点不再是固定时间;
Javascript的影响:
Unicode编码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。