字符集?锟斤拷?

        长久以来,如何把字输入到电脑里并显示出来是一个非常大的问题,因为不管是中文还是英文,计算机只能认识0和1的二进制。

        有人就想的出来,把单词拆成一个字母,然后把这个字母进行编码。然后再把编码转换为二进制。显示时计算机只要调出用户需要打的这个字的编码,就可以让字显示在电脑上。美国就率先整出了ascll字符集,所谓字符集就是把这些常用字母整合在一起,铺在一个列表中,每一个字母或者是符号都有行数和列数组成的编码。英文字母也就那简单的26个加上再收录一些字词,一共就128个字符。

        但这仅限于英语。其他一些欧盟国家看见后纷纷效仿,把ascll字符集扩展了一下,纷纷在这128个基础字符后加上自己的文字。导致现在ascll字符集非常的混乱。

        不止这些,当ascll字符集扩展到中文时,就又面临着一个问题。中日韩地区都使用汉字,并且日韩地区也演化出来了一些其他字形。虽然都是汉字,但笔画之间多少有点差异。这就是很大的一个问题。并且80年代中国也推出了常用交换字符集。光是基本集gb 2312-80中。就有6763个常用简体汉字,注意这是常用简体。一个字节长度只能编码256个字符。这对中文来说显然是不够用的。一个中文要占用两个编码位。也就是两个字母。这就是每个自然段为什么中文要空两格?英文要空四个字母长度的来源。

        只有这一个字符集肯定是不够用的,一些稍微生僻点的字根本打不出来。要是你之前办身份证有生僻字的话可能只能改名。虽然现在字符集已经日趋完善,但是,一些生僻字虽然能打出来,但是要么格格不入,要么直接给你显示一个框,这是因为一般字符集都是按照gb 2312来编的,如果有生字,只能从其他的字符集里来调用。仿宋这个字体就是很好的一个例子。如果你在仿宋gb 2312里打出一个不在gb 2312字符集里面的一个字就会调用其他的字符集,但是其他字符集跟仿宋的字体又不一样。所以这些生僻字就变成了非常突出的一个字。微软又在后面基于gb 2312拓展了一些繁体字和其他的汉字。就变成了gbk字符集。gbk并非国家制定标准,而是行业标准。此时字符集已经非常乱了。

          但是Unicode(中文译为万国码或统一码)站了出来,势必要统一字符集。于是直接收入了25种文字将近3万个文字,并且现在已经扩展到了111多万个,他把字形几乎相同的字归为了一个码位,这样也节省了空间。但很容易弄乱。其中这个字符集也包含了一些私用字符。比如苹果的logo就被单独存到了一个字符集中。只有mac或者iOS用户能打出。而且Unicode分为三种编码方式。有utf—8/16/32(最常用的是utf-8)。但同时也造成了与其他字符集的冲突。比如与gbk字符集冲突。锟斤拷就是这么来的。

          在Windows自带的记事本中,你随便打入一段话。然后使用Gbk编码把它给保存下来。然后再打开在另存为中把编码形式改成utf—8。此时你在使用utf-8编码打开。这些文字就变成了乱码。然后你再把这些乱码给另存为,在另存为界面中,你又选择gbk编码。保存后再打开,就会发现这些文字全部变成了锟斤拷。根本原因就是在你保存为utf—8的那一刻。你保存后再打开就会以utf—8方式打开。此时文本内容就变成了连续的�,而你在使用gbk编码打开。因为按照gbk规定两个�在一起对上的码位是EFBF BDEF  BFBD,而这三个码位又正好对应的文字是锟,斤,拷。所以就显示为满屏的锟斤拷。

        其实在Windows 7,Windows 8还有早期Windows10中,你会发现记事本中默认都是用ansi编码的,但在Windows10后期版本以及Windows11中的记事本已经改为了使用utf—8了。

        本期文章就到这里了。图中所有的照片均来自于网络。

你可能感兴趣的:(字符集?锟斤拷?)