问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

常见的几种编码方式

发布网友 发布时间:2024-09-27 08:23

我来回答

1个回答

热心网友 时间:2024-10-28 15:56

在处理文本文件或制作网页时,编码方式问题经常出现,处理不当会导致乱码问题,因此深入了解文本编码方式很有必要。

常见的字符编码方式包括:Unicode、ASCII、GBK、GB2312、UTF-8。以下是对这些编码方式的简要说明:

1. ASCII码

ASCII码是美国在19世纪60年代为了建立英文字符和二进制的关系时制定的编码规范,它能表示128个字符,包括英文字符、阿拉伯数字、西文字符及32个控制字符。它用一个字节表示字符,但只用后7位表示字符,最前面的一位统一规定为0。

2. 扩展的ASCII码

原本的ASCII码对于英文语言的国家是够用的,但欧洲国家的一些语言会有拼音,这时7个字节就不够用了。因此一些欧洲国家决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使用的编码体系可以表示最多256个符号。但这时问题也出现了:不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0—127表示的符号是一样的,不一样的只是128—255的这一段。这个问题直接促使了Unicode编码的产生。

3. Unicode符号集

世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。而Unicode就是这样一种编码:它包含了世界上所有的符号,并且每一个符号都是独一无二的。比如,U+0639表示阿拉伯字母Ain,U+0041表示英语的大写字母A,U+4E25表示汉字“严”。具体的符号对应表,可以查询 unicode.org,或者专门的汉字对应表。很多人都说Unicode编码,但其实Unicode是一个符号集(世界上所有符号的符号集),而不是一种新的编码方式。

但是正因为Unicode包含了所有的字符,而有些国家的字符用一个字节便可以表示,而有些国家的字符要用多个字节才能表示出来。即产生了两个问题:第一,如果有两个字节的数据,那计算机怎么知道这两个字节是表示一个汉字呢?还是表示两个英文字母呢?第二,因为不同字符需要的存储长度不一样,那么如果Unicode规定用2个字节存储字符,那么英文字符存储时前面1个字节都是0,这就大大浪费了存储空间。

上面两个问题造成的结果是:1)出现了unicode的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示unicode。2)unicode在很长一段时间内无法推广,直到互联网的出现。

4. UTF-8

互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。

UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。 UTF-8的编码规则很简单,只有两条: 1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。 2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

5. GBK/GB2312/GB18030

GBK和GB2312都是针对简体字的编码,只是GB2312只支持六千多个汉字的编码,而GBK支持1万多个汉字编码。而GB18030是用于繁体字的编码。汉字存储时都使用两个字节来储存。

总的来说:

ASCII编码:用来表示英文,它使用1个字节表示,其中第一位规定为0,其他7位存储数据,一共可以表示128个字符。

拓展ASCII编码:用于表示更多的欧洲文字,用8个位存储数据,一共可以表示256个字符

GBK/GB2312/GB18030:表示汉字。GBK/GB2312表示简体中文,GB18030表示繁体中文。

Unicode编码:包含世界上所有的字符,是一个字符集。

UTF-8:是Unicode字符的实现方式之一,它使用1-4个字符表示一个符号,根据不同的符号而变化字节长度。

更多学习内容:
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? ...和 阳信二中(可能只是读音正确),求两所学校的详细地址和联系电话,万 ... 无棣第一中学的校容校貌 如何办理个体营业执照?个体营业执照办理流程是怎样的? 无棣第一中学所获荣誉 滨州哪个高中最好 微博超粉DMP定向升级,让人群包投放“信手拈来” 最边上的牙齿拔了两个需要镶吗,不镶会松动 无棣第一中学所获成绩 微博推广-粉丝通广告的推广形式有哪些?(最新) 无棣第一中学校容校貌 山东省无棣第一中学怎么样好不好? 新浪微博粉丝通全国合作代理商 广州韩研活性炭有限公司果壳活性炭 思文的英语怎么念 怎么选假发比较自然? 什么是粉丝通? 韩研活性炭的韩研活性炭简介 ...不知道会不会有其他的影响啊 缺牙不补的话 会有什么不好的结果... 微博粉丝通广告平台投放怎么收费价格表 广州韩研活性炭有限公司椰壳活性炭 红米手机wifi老是断开是怎么回事? ...卖东西我自己找借口上厕所可是找到了厕所没站稳不小心掉下去坑不是... 为啥下载的文档都是乱码? 观念定位策略观念定位策略的分类 滨州哪个高中比较好 ...梦见我在房子上面准备做梯子下去,手不小心碰到旁边的铁架子掉... 滨州市哪些中学好 程序员必备:彻底弄懂常见的7种中文字符编码 企业经济实力广告 Core i9-9900K/i7-9700K是否在所有游戏测试中都保持领先地位? 有毒的蜂有哪些 梦见初中男同学要我请吃饭的预兆 艾草治什么病最旺盛 ...山羊获得攻略介绍_模拟山羊网游版全山羊获得攻略是什么 邵阳真美女子医院肖秀根主任医师 模拟山羊mmo老山羊怎么解锁 艾草可不可以治疗妇科病 模拟山羊mmo老山羊攻略介绍_模拟山羊mmo老山羊攻略是什么 邵阳真美女子医院权威专家介绍 亲们,谁知道邵阳地区常见的妇科病有哪些啊?如下腹痛、下腹包块。急需...