#创作计划# 字符编码的秘密
2025-08-08 16:52:03
发布于:江西
前言
在大数据时代,我们存储的数据越来越多,那计算机是如何识别这些字符的呢?
引入
新建一个文本文档,在里面输入“联通”二字并保存。
关闭记事本,再次打开,发现变成了一通乱码!
在不同Windows不同版本的系统上显示的是不一样的,在Windows10上显示为��ͨ,为什么会这样呢?难度是联通得罪了微软?
但是,如果我们写的是“中国联通”,就不会出现乱码。其实,这和我们今天要讲的内容有关,那就是——字符编码。
计算机的存储方式
在了解字符编码之前,我们来了解计算机是如何存储并处理数据的。计算机本身并不认识文字,它只认识二进制数表示法(因为计算机用高电平和低电平分别表示1和0),因此,需要把字符转换成二进制形式,计算机才能正确处理字符。于是,人们制订了各种将字符转换成二进制的方法,也就是字符编码,以下是详细讲解。
字符编码
在计算机技术刚出现的时候,只有ASCII这一种字符集,用来存储英文字符,每个字符采用一字节。这种方法对于美国来说够用了,但后来使用计算机的国家越来越多,于是中国用GBK,日本用JIS,每个国家都制订自己的字符编码……这样下去,各国之间的通信就会变得很麻烦,这时,万国码Unicode应运而生。
Unicode将所有国家的字符纳入一个统一的编码体系中,确保每个字符都有其独特的位置,从而避免了冲突。它将英文存储在一个字节当中,常用中文存储在3字节中,生僻字存储在4个字节中……总之,Unicode的出现给人们带来了极大的便利。
回到之前的神奇乱码,不知道有没有人注意到了,在图1的右下角标明了文本的字符编码是ANSI,这代表计算机使用的是本地编码,在中国大陆是GBK。“联通”对应的编码是1100 0001 1010 1010 1100 1101 1010 1000
,而这和Unicode的UTF-8规范的110x xxxx 10xx xxxx
形式完全吻合,因此计算机误将文本识别为UTF-8编码(图2右下角),而这两条编码在UTF-8中什么也不是,所以出现乱码。
不过,聪明的你一定想到了,我将文本重新用GBK编码打开不就好了?我们来试一下。打开记事本,将文本以GBK编码强制打开:
但是,事实并不如此:
为什么会出现“锟斤拷”呢?原来,UTF-8会把2个�转换成十六进制编码EF BF BD EF BF BD
,在GBK中正好对应“锟斤拷”。话说回来,要是我们发出的文本也被别人错误打开,那结果将不堪设想。如何避免呢?
在我们保存的时候,有一个字符编码的选项,我们只要选中UTF-8,就能避免这个情况(见图5右下角):
之前我们提到过,“中国联通”不会变成乱码,因为“中国”二字的GBK编码和UTF-8编码形式不符,系统就会知道,这不是UTF-8编码,从而不出现乱码。
彩蛋
新建一个文本文档,在里面输入“力挺联通”,直接保存并打开,看看结果如何。(不做图5操作)。
小结
本次我们了解了字符编码,并知道了预防乱码的方法,如有错误欢迎在评论区补充,请多多支持~
全部评论 3
666
2025-08-12 来自 福建
0你不信你试试
2025-08-12 来自 江西
0
2025-08-08 来自 江西
0d
2025-08-08 来自 江西
0
有帮助,赞一个