大白话让你搞懂字符集与乱码,让你心中不再有小疑问!

文章介绍了ASCII、GBK和Unicode编码体系,包括它们的特点和适用场景。ASCII占用1字节,GBK兼容ASCII并主要针对中文,而Unicode提供全球字符覆盖,有UTF-32和UTF-8两种实现。UTF-8通过字节序列标识字符长度,解决了乱码问题。文章还提到GBK与UTF-8解码不匹配导致的乱码问题,并指出掌握字符集知识对处理乱码问题的重要性。
摘要由CSDN通过智能技术生成

1.ASCII:美国人编的 把他们常用的语言符号,数字,标点,特殊符号编成码点(十进制),转成2进制只需要7位就够了,因为他们就编了128种符号,因为计算机底层存放二进制是以字节位单位,所以ACSII字符集占1字节。所以前面一位补0就可以。

这也是ASCII编码的特点 第一位为0

 随着计算机的发展,不止美国人,中国人也有自己的编码:GBK

2.GBK编码

中国人编写的,兼容了ASCII码(兼容就是原来的ASCII种65(十进制)代表a现在GBK也是),谁让ASCII是先出现的,计算机这玩意不就是西方说的算。

GBK中汉字占两个字节,想一想2的16次方能表示的字符数65536

GBK编码中包含汉字的数量是21886个,加上那一点ASCII字符数量,65535当然绰绰有余

GBK编码特点:汉字的两个字节,第一个字节的第一位为1

3.Unicode编码

随着计算机的普及,各国都有自己的编码,这样在信息交流方面带来很大的不便。

所以国际出台了Unicode编码

关于UTF-32

全世界语言字符那么多?怎么确保都用一个统一的规范编进“字典”?

国际联盟说,海纳百川,有容乃大!

它出手了!直接用4个字节(32位)代表一个字符,2的32次方,我的天,这个妥妥够用了,但是这样显然占据内存较多,我的评价不如GBK。

关于UTF-8

他就是秦王,一统天下 !

它是我的神!

汉字占3个字节,思考以下解码的适合怎么知道是三个字节连在一起解的呢?

因为我们在编码的时候 汉字我的第一个字节以1110开头所以解码的时候,计算机一看这个字节以1110开头,那我就从这个字节往后一起数三个,一起看,最终解码成“我”这个字符

 

如下是为什么会乱码的一个举例:

我们采用GBK进行编码 采用UTF-8进行解码

因为很多字符集都兼容了ASCII码,所以在编解码的时候数字,英文字符一般不会乱码

但是汉字,呵呵 GBK编码是以1开头,解码的时候计算机拿到这个以1开头的字节蒙了,不知道什么意思啊?

所以解码出来的是a??m

 

 

 学习完相关字符集的知识点后下面是一些有关的javaAPi:

 其实这些字符集没什么神秘的,有的人一遇到乱码就头疼,相信你掌握了上面的这些知识点,以后在碰见乱码见一个杀一个!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值