专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Javascript教程 » javascript编码:HTML和javascript常碰到的编码问题 »正文

javascript编码:HTML和javascript常碰到的编码问题

来源: 发布时间:星期五, 2008年12月26日 浏览:2次 评论:0
在这里我简单下前端HTML和javascript日常工作中常碰到编码问题
在计算机中我们储存信息都是用 2进制码表示我们认识、屏幕上显示英文、汉字等符号和储存用 2进制代码互相转换就是编码
有两个基本概念需要介绍说明char 和 character encoding:
char 也就是某个符号和某个数字映射关系个表也就是它决定了107 是koubei ‘a'21475 是口碑“口”区别表有区别映射关系如 asciigb2312Unicode. 通过这个数字和映射表我们可以把个 2进制表示数字转换成某个
chracter encoding 编码方式例如同是对于应“口” 21475 这个数我们是用 \u5k3e3 表示呢还是用 %E5%8F%A3 来表示呢?这就是由 character encoding 来决定
对于 ‘koubei.com' 这样 串来说是美国人常用他们就制定了个 叫做ASCII 全称是 american standard code of information erchange 美国标准信息交换码用0–127这128个数字(27次方0×00-0×7f) 代表了123abc这样常用128个共是 7 bits再加上第个是符号位要用来去补码反码表示负数什么共8 bits 构成当年美国人就是小气了点要是开始就设计成 是16 bits、32 bits世界上会少很多问题不过当时估计他们觉得 8 bits 就够了可以表示128个区别呢!
介于计算机这玩意儿是美国人搞出来所以他们自己省事把自家用符号都编码好了挺爽但当计算机开始国际化时候问题出来了拿中国举例吧汉字就好几万如何办?
现有 8 bits 系统是基础不能破坏不能去改到 16 bits的类否则改动太大了只能走另条路:用多个 ascii 去表示个其他也就是 MBCS ( Multi-Byte Character 多字节系统)
有了这个 MBCS 概念我们可以表示更多个比如我们用 2 个 ascii 就有 16 bits, 理论上有 2 16 次方 65536 个但这些编码如何分配到上呢?比如口碑”口” Unicode 编码就是 21475谁决定呢?也就是刚刚介绍charascii就是最基础在此的上我们有类似于 gb2312 big5这样针对简体中文和繁体中文MBCS集等等终于有个叫 Unicode Consortium 机构决定做个囊括所有在内集(UCS, Universal Character Set)和对应编码方式标准即 Unicode从1991年开始它发布了第版 Unicode 国际标准ISBN 0-321-18578-1 国际标准化组织 ISO 也参和了这个定制ISO/IEC 10646 : the Universal Character Set总的Unicode 是个基本覆盖了所有已经存在地球上符号标准了现在正在被越来越广泛使用ECMA 标准也规定javascript语言内部使用 Unicode 标准(这意味着javascript变量名、名等是允许中文!)
对于身在中国开发者来说可能碰到比较多问题就是 gbk, gb2312, utf-8 的间转换的类问题了严格说这个说法不是很准确gbkgb2312是集 (char)而 utf-8 是种编码方式 (character encoding) 是 Unicode 标准中 UCS 种编码方式使用 Unicode 网页主要用UTF-8编码所以大家常常就把它们并列了其实是不准确
有了 Unicode 后至少人类文明没有碰到外星人的前这是把万能钥匙了都用它吧而现在使用最广泛 Unicode 编码方式就是 UTF-8 (8-bit UCS/Unicode Transformation Format) 了它有几个特别好地方:
编码 UCS 全世界通用
种变长编码方式(variable-length character encoding)兼容 ascii
第 2点是个很大优点它使得以前使用纯 ascii 编码系统兼容而且不会增加额外存储量(假设定长编码方式规定每个由2个 s 组成那么这时候 ascii 占用存储空间将增大倍)

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: