- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入图解字符集与字符集编码选编
深入图解字符集与字符集编码
一、charset vs encoding
charset与encoding的差别在哪?charset=utf-8与encoding=utf8哪种写法更规范?本文将探讨这两者的联系与区别。
字符集与字符集编码是两个不同层面的概念
charset是character set的简写,即字符集。
encoding是charset encoding的简写,即字符集编码,简称编码。
可以把这两者与接口及接口实现做个对比:
从这里可以很清楚地看到,
编码是依赖于字符集的,就像代码中的接口实现依赖于接口一样;
一个字符集可以有多个编码实现,就像一个接口可以有多个实现类一样。
可以简单看两个例子,分别来自于html文件与xml文件中,一个用了charset,一个则是encoding:meta http-equiv=content-type content=text/html;charset=utf-8
?xml version=1.0 encoding=UTF-8?
哪一种用法更规范呢?显然是后者,它更加准确地区分了字符集与编码的概念。
为什么要严格区分字符集与编码这两个概念?
字符集与编码一对一的情形
有很多的字符编码方案,一个字符集只有唯一一个编码实现,两者是一一对应的。比如GB2312,这种情况,无论你怎么去称呼它们,比如“GB2312编码”,“GB2312字符集”,说来说去其实都是一个东西,可能它本身就没有特意去做什么区分,所以无论怎么说都不会错。
为什么一对一是一种普遍的情况呢?
我们以GB2312为例,GB=Guo Biao=国标=国家标准,标准出来本来就为了统一,你一个标准弄出N个编码实现来,你让人家用哪个呢?
字符集与编码一对多的情形
事情到了unicode这里,变得不一样了,唯一的unicode字符集对应了三种编码:UTF-8,UTF-16,UTF-32。如果还是这么笼统地去称呼,就很容易搞混了。
为什么unicode这么特殊?
人们弄出新的字符集标准,驱动力无外乎是旧的字符集里的字符不够用了。
unicode的目标是统一所有的字符集,囊括所有的字符,所以字符集发展到它这里就到头了,再去整什么新的字符集就没必要也不应该了。
但如果觉得它现有的编码方案不太好呢?在不能弄出新的字符集情况下,只能在编码方面做文章了,于是就有了多个实现,这样一来传统的一一对应关系就打破了。
我们严格地区分字符集与编码两个概念,理??就在这里。
指定了编码,它所对应的字符集自然就指定了,编码才是我们最终要关心的。
让我们来看一个图,它展现了unicode早期与现在的一些差别:
注:由于历史方面的原因,你还会在不少地方看到把Unicode和UTF-8混在一块的情况,这种情况下的Unicode通常就是UTF-16或者是更早的UCS-2编码,在后面的篇章中我们会进一步分析。
我们现在说了不少unicode,但我们还没有准确地定义这个词,我们可能有些疑问,如:
unicode是不是就是指unicode字符集呢?
unicode编码是不是就是指UTF-8,UTF-16,UTF-32这些东西呢?
这些问题没办法简单用是和否回答,在第二篇里会做进一步探讨。
二、字符集及其编号
?在深入研究字符集编码,简称编码之前,我们先引入一个概念:编号,引入它是为了更好地与编码相区分。如果你对unicode有深入了解,你也许已经意识到了Unicode中码点(code point)扮演的正是编号的角色。类似的还有GB系列中所谓的区位码,有些说法又叫它为汉字内码,也许还有其它叫法。其实叫什么并不重要,爱咋咋地,我并不关心。但乱叫容易叫混了,比如把码点也叫成unicode编码,这里先把这些归入到编号概念。为区别起见,用黑色加粗的编码特指字符集编码。(到了后面你甚至会为字符集编码的边界在哪而困惑,为它的准确定义而纠结,不过到那时你已经属于”难得糊涂“了,编号这一概念你也可以把它丢到爪哇国去了。)
编号是什么?
编号可以看作是字符与编码中间的一个抽象层,过渡层;
广义上说,编号也可看成是某种编码;
狭义上说,编码也可视作为某种编号。
图:字符--编号--编码
编号与编码的主要区别在于编号不涉及具体使用多少字节来表示、是用定长还是变长方案等细节问题。编号仅仅是一个抽象的概念。
在进一步比较编号与编码之前,我们先看看编号是如何来的。
字符集通常是带编号的有序集合
集合(Set,数学意义上):一组不重复的,无序的的元素。
字符集:不重复的,带编号的有序的的字符集合。
图:数学意义上的字符集对比实际的字符集
编号是如何来的?
字符被整理出来之后往往数量众多,通常是置于表格之中。出于统计方面的原因,人们通常用一个数字来编号。表格本身就是一种有序的暗含了编号的形式,哪怕
您可能关注的文档
最近下载
- 全套IECQQC080000-2017有害物质过程管理体系文件(HSPM).pdf VIP
- 中国东方资产管理股份有限公司招聘笔试题库2025.pdf
- 市场调查与分析: 数据分析网络调查报告撰写 (慕课版)王晓燕习题答案.docx
- 起重装卸机械操作工高级工培训大纲与教学内容概述.docx VIP
- 2025至2030中国中药饮片行业市场发展现状及竞争格局与投资发展报告.docx
- 2025年教科版六年级上册科学第一单元综合检测试卷及答案.pptx VIP
- 《企业质量管控与应用》课件.ppt VIP
- 吊顶施工合同范本.pdf VIP
- 公共建筑室内温度控制管理办法——空调系统节能运行管理制度.doc VIP
- 统编版八年级语文上册课件《诗词五首-渔家傲》.pptx VIP
文档评论(0)