字符集和字符编码

字符集
    规定了 某个文字 对应的 存储值(流中的二进制数据) 的一一对应关系 
    同一个文字在不同字符集 UTF-8 GBK 中对应的二进制数据是不一样的
        
    对于一个字符集 三个要素:   字库表-->字符集能表示的所有字符的范围(ASSII和Unicode和GBK都不一样)
                                编码字符集-->用一个编码值标示一个字符在字符集中的位置(codePoint)
                                字符编码-->编码字符集(字符在集中的序列号)和字符实际存储值对应关系
    
    有的字符集就不包括中文,有的字符集没有日文
    Unicode是一个编码字符集(字库表包括中日英)


字符编码存在的原因
    大家都把编码字符集当做存储值不就完事了吗,还要字符编码 干什么??
    比如对于Unicode来说,它包含所有字符,如果使用字符序号(编码字符集)来进行存储,
    那么每一个字符都需要三个字节(字符太多了),对于欧美国家用不到中文的,
    存储起来就有点浪费;这就是接下来UTF-8出现的原因了
    
UTF-8和Unicode的关系    
    Unicode的编号从0000开始一直到10FFFF共分为16个Plane(一个Plane 65535个字符)
    UTF-8仅仅实现了第一个Plane,以至于当有序列超过65535的字符时候,UTF-8就会出问题;
    UTF-8是变长的,1-3字节,每个字节的靠头标示了这是个单字节字符还是多字节字符
    
解决乱码
    GBK与Unicode 是不同的字符集,编码方式自然也不同。
    先把乱码按照本机的字符集编码,然后用乱码本身能正确标示的字符集的字符编码进行解码
    
    Unicode有两种编码方式 UTF-8 和UTF-16 
    (一般字符集是一种,就是因为unicode 为了效率问题才有了两种编码方式)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值