简简单单搞明白gbk,utf 您所在的位置:网站首页 在windows中为了实现全角与半角的关系 简简单单搞明白gbk,utf

简简单单搞明白gbk,utf

2024-07-10 12:37| 来源: 网络整理| 查看: 265

一直以来对于编码问题就晕晕乎乎的,一直搞不清楚其中的原理,这次认认真真的学习了一下,主要还是从这篇文章中节选:

https://blog.csdn.net/LSXGM/article/details/80494258

原文稍微有点长,这里我就用自己的理解总结一下,看不懂的话可以去看原文,说得非常清楚。

从大方面总括一下来说,GBK是中国的编码,UTF-8是国际化的编码(兼容GBK),而ANSI其实是一种自动适应的编码,即在中国,ANSI就是GBK,在国外,就是国外的编码(不一定全是UTF-8),全角就是中国特色的英文数字符号半角就是国际化的英文数字符号

然后我们从具体的细节来讲一下,首先是GB2312:

GB2312起源于区位码,区位码是一个四位的十进制数,可以表示一个汉字或者符号,GB2312用两个字节来表示汉字和数字英文符号一些的,并且与区位码是一一对应的。

一般编码方式是:0xA0+区号,0xA0+位号。如下表中的 “安”,区位号是1618(十进制),那么“安”字的GB2312编码就是 0xA0+16 0xA0+18 也就是 0xB0 0xB2 。根据区位码表,GB2312的汉字编码范围是0xB0A1~0xF7FE

这里说明一下,两个字节 = 16位2进制 = 4位16进制,所以2字节编码在上例中表示成0xB0B2

然后因为这里的编码全部是2字节的,而ASCII码编码的英文数字都是1字节的,也就是说这里的英文和数字其实是有两种编码的,那么其实这也是半角和全角的由来了,我们之前应该有在输入法上见到半角和全角,其实这个是由编码方式不同所导致的。

举个栗子:

123 全角 123 半角 abc 全角 abc 半角

怎么样,发现差别了吧,其实差别还是很大的,甚至这个全角字符所占的空间都比半角的要大。不过,我们日常生活中很少会见到全角的英文,因为现在输入法一般默认的是半角输入,比如我用的win10自带输入法就需要自己去设置里面修改成全角输入,可以自己去试试啦。

然后随着时间推移,GB2312就被淘汰啦,因为它里面所能编码的汉字还是太少了,新一代的编码就是我们现在所熟知的GBK了,不过要注意的是,这个时候的GBK就不再和区位码一一对应了,此时区位码也就离开了历史舞台啦。

不过因为每个国家都有属于自己的编码,所以导致大家的编码就各不相通,于是就产生了Unicode,它把全球各国文字都统一在一个编码标准里,相当于国际化的区位码表。

不过由于Unicode全部使用的是2字节来编码,这使得本只需要1字节的英文数字也被迫增加了长度,存储成本和流量大大地增加,所以Unicode编码大多数情况并没有被原始地使用,而是被转换编码成UTF-8。

而UTF-8就将原Unicode分为了三块,标准ASCII码都采用的是1字节编码,而大部分中文都采用的3字节编码,其他的就是2字节了。(这样对于使用英文字母多的国家来说就可以很节省资源啦。

如有错误恳请斧正,本人不胜感谢。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有