基础知识总结:字符编码

因为数据是二进制表示的,现在存在各种各样的编码,因为计算机识别的编码与数据本身的编码不一致,就会造成乱码。

ASCII

美国规定的128个字符表示的二进制表示方法,这种方法称为ASCII码,计算机存储的最小单位是字节(8位),ASCII码的后7位表示字符本身,最高位设置为0,后7位0~127表示128个字符,ASCII码对美国够用了,但是对其他国家其他字符远远不够。

ISO 8859-1

西欧编码,这种编码也是一个字节表示一个字符,前127位与ASCII码一样,128到255表示其他的西欧字符。后来推出的Windows-1252就是在其基础上增加了一些数字表示打印字符,一般都用Windows-1252来解析了。

GB2312

主要基于7000个汉字的字符编码,不包括繁体字和特殊字,它用两个字节表示字符,最高位为1,表示汉字。如果最高位是0,则表示ASCII码。

GBK

是在GB2312的基础上增加到21000个汉字,兼容了繁体字。同样用两个字节表示。

GB18030

GB18030再GBK的基础上增加到了76000个字符,兼容了少数民族字符和日韩字符,两个字节的长度已经不能满足这种编码需求了,所以长度增加到4个字节。

Big5

针对台湾和香港的繁体字符集。


乱码是怎样产生的呢?

如果一个文件的字符编码是Windows-1252,如果用GB18030的编码格式来解析的话,就会出现乱码的现象。所以用正确的编码格式编码就可以了。

Unicode

编码跟其他编码不一样,unicode编码给世界上所有的字符都制定了统一的编号,包括110多W,所以可以通过给字符找到对应的unicode编码来找到它真正表示的字符含义,把Unicode编码对应到二级制表中就用到了UTF-32, UTF-16和UTF-8。

UTF-32用字符二进制的完整表示,就是4个字节,因为会造成空间浪费。

UTF-16使用变长自己表示,可能为两个自己可能为4个字节,常用语系统内部编码,比UTF-32节省了空间。

UTF-8就是使用变长字节表示,每个字符使用的字节个数与其Unicode编号的大小有关,编号小的使用的字节就少,编号大的使用的字节就多,使用的字节个数从1到4个不等。UTF-8字符编码兼容ASCii码,一个字符一般用3分字节表示。


所以可以通过Unicode编码实现各种编码的转换,从A编码转换到B编码,可先根据A编码格式找到A对应的映射表找到对应的unicode在通过映射表找到B的编码格式。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值