啥是编码Unicode_马鸿凯_新浪博客

先大致瞄下这个


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

单字节编码:

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

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

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

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

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

编码有: DBCS、

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

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

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

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

我们现在用的是啥码制?

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

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

因为unicode。

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

最终看着看着懵逼了。。。。不急,接着继续。

虽然每个字符在Unicode字符集中都能找到唯一确定的编号(字符码,又称Unicode码),但是决定最终字节流的却是具体的字符编码
来举个例子: 对Unicode字符“A”进行编码,UTF-8字符编码得到的字节流是0x41,而UTF-16(大端模式)得到的是0x00 0x41;啥意思呐,别整这么专业,就是在你妈叫你狗蛋,你爹叫你,傻缺。但是你爹你娘是一家人(一家人就是unicode,你就是A)。

unicode编码都有什么?

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

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

整清楚:字符集,字符码、 字符编码、代码页;

以上只是一些理解:高潮当然啥是unicode?整成一句话,就是一种适用于广大人民群众的食物。

原创:大部分摘自上述链接。如有错误,敬请斧正。

请注明出处: Ma_Hong_Kai

评论
添加红包

请填写红包祝福语或标题

红包个数最小为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、付费专栏及课程。

余额充值