编码,解码,乱码,unicode码

字符编码

一、为什么需要字符编码?

啥意思,就是不同国家为了需求整出 ASCII、OME、DBCS、GBK,然后即出现了 Unicode。

 

二、各种编码

1、单字节编码:

ASCII字符集由95个可打印字符(0x20-0x7E)和33个控制字符(0x00-0x19,0x7F)组成。

OME:0x00~0x7F这个范围的解释基本是相同的,而对于后半部分0x80~0xFF的解释却不一定相同。(最终导致词不达意)

2、多字节编码方式:(为了落后的亚洲国家使用)保持和ASCII字符集的兼容

编码有:DBCS

GB2312:涵盖了所有简体字符以及一部分其他字符;(最常用)

GBK(K代表扩展的意思):在GB2312的基础上加入了对繁体字符等其他非简体字符(GB18030字符集不是双字节字符

集)。这两个字符集的字符都是使用1-2个字节来表示

 

三、解码

解码方式:查表操作就可以完成编解码的过程

解码方式:根据第一个字节来选择不同的码表进行解析,然后在去查表

 

四、日常生活的编码。

1、是怎么区分简体和繁体的?

Windows系统采用936代码页来实现对GBK字符集的编解码。在解析字节流的时候,如果遇到字节的最高位是0的话,那么就使用936代码页中的第1张码表进行解码,这就和单字节字符集的编解码方式一致了。

2、我们现在用的是啥码制?

我们现在通常说到ANSI编码,通常指的是平台的默认编码,例如英文操作系统中是ISO-8859-1,中文系统是GBK。

为啥我们可以在不同的机器厂整不同的语言?

因为unicode。

3、乱码原因是啥?

造成乱码的原因就是因为使用了错误的字符编码去解码字节流。

 

五、啥是unicode编码?

Unicode字符集涵盖了目前人类使用的所有字符,并为每个字符进行统一编号,分配唯一的字符码(Code Point)。Unicode字符集将所有字符按照使用上的频繁度划分为17个层面(Plane),每个层面上有216=65536个字符码空间。(意思是我们只用到plan0呗)、

 

六、unicode编码都有什么?

UCS-2/UTF-16:使用2个字节来表示,并且编码得到的结果完全一致。不同之处在于,UCS-2最初设计的时候只考虑到BMP字符,因此使用固定2个字节长度,也就是说,他无法表示Unicode其他层面上的字符,而UTF-16为了解除这个限制,支持Unicode全字符集的编解码,采用了变长编码,最少使用2个字节,如果要编码BMP以外的字符,则需要4个字节结对。

UTF-8、GB18030、gb2312,codepage936………

 

虽然每个字符在Unicode字符集中都能找到唯一确定的编号(字符码,又称Unicode码),但是决定最终字节流的却是具体的字符编码

来举个例子:对Unicode字符“A”进行编码,UTF-8字符编码得到的字节流是0x41,而UTF-16(大端模式)得到的是0x00 0x41;啥意思呐,别整这么专业,就是在你妈叫你狗蛋,你爹叫你,傻缺。但是你爹你娘是一家人(一家人就是unicode,你就是A)。

 

什么是字符集,字符码、字符编码、代码页?待续……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ma_Hong_Kai

微信 2936729162

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值