论GBK、Unicode、UTF-8的区别

记得自己刚学计算机的时候,经常听到GBK,Unicode,UTF-8等编码,当时懵懵的,总是把GBK和Unicode搞混,那么这些编码到底有什么区别呢? 这还得从计算机的来由说起。

  • 很久很久以前,当计算机刚刚发明的时候,由于计算机只能接受2进制的数据,美国人民为了交流方便,约定了一套编码,他们用8根可以开合晶体管来表示不同的状态,一 共可以组成 2^8 种不同的状态,他们将A、B、C、D ...这些字母以及一堆奇奇怪怪的符号 (刚好128个字符,半个字节的长度,为了防止以后需要为新的符号编码,于是干脆取一个字节,最高位置为0。后七位从0-127分别对每一个符号编码) 与晶体管组成的状态一一对应,形成了一套名为ASCII的编码,计算机每次读取一个字节,然后参照ASCII表把这些编码翻译成字符。美国人民看到这样,很高兴。
  • 后来,计算机流传到了欧洲,发现不行啊,他们的大部分文字无法在计算机中表示,于是欧洲人就自己又整了套编码,把127以后的空位都用掉了,一个字节的长度,128~255这一页的字符集被称为拓展字符集,欧洲人民看到这里,很高兴。
  • 但从此之后,人类便没了新的状态可表示其他字符了,可是还有许多文字没办法表示呢。这时,计算机流传到了中国,但是已经没有多余的状态表示汉字了,难道中华民族5000年的历史要栽在计算机手里?!不不不,这点破事怎么能难道我们勤劳勇敢的中国人呢?(此处应有滑稽, 如果有掌声就更好了 ),于是我们便直接把那127后面的所有字符统统取消了,用两个字节来表示汉字。这就是现在的GBK编码了。
  • GBK编码规定,计算机在读入一个字节时不能那么死板,先看看第一位是不是0,如果是,就当做ASCII来读入一个字节,否则就读入两个字节(计算机:我我我我做错了什么啊QWQ)。中国人民看到这,觉得很好。

从此,天下便大乱了,欧洲人民的电脑无法读出我们电脑的信息,我们的电脑也读不懂他们的信息。
总而言之,一言蔽之,天下大乱,群雄并起,百姓生灵涂炭(此处应有滑稽,掌声就算了)。

于是乎,就有个国际组织站了出来,打算着手解决这个问题,他们说:这样吧,我给泥萌重新弄套编码,把大家的字符都整进来。于是,Unicode就这么横空出世了!!!这套编码从0一直算到了约100万(三个字节),它把所有的字符都收了进来,每个字符都有唯一的编号,这就解决了编码冲突问题,于是天下大定。但是事情并没有这么结束了,Unicode只是把大家的字符都归纳了进来,并没有为解码和传输做成规定。

  • 于是UTF-8、UTF-16、UTF-32这些编码方案就这样蹦了出来(注意,UTF-8并不是一种新的编码,他只是Unicode的实现方式之一)。为了节省空间,UTF-8采用变长编码,他可以使用1~4个字节来表示一个符号。
  • UTF-8的编码规则很简单,就两条:
    1. 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
    2. 对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
  • UTF-8和Unicode转换
    在Windows系统下,有种最直接也最便捷的转换方法:记事本!是的你没听错,就是记事本大法!
    那么具体该怎么做呢?这里以UTF-8转Unicode文件为例来讲解:

    • 首先使用记事本打开一个UTF-8的文件,然后点击“另存为”,然后填好文件名称,在 编码(E) 里面选择 Unicode 并保存就可以啦。

参考博文:
https://www.cnblogs.com/dhsz/p/7737480.html
https://www.cnblogs.com/zhaoshujie/p/9594649.html

原文地址:https://www.cnblogs.com/Return-blog/p/12394815.html

时间: 2024-08-28 20:13:58

论GBK、Unicode、UTF-8的区别的相关文章

UTF-8 GBK UTF8 GB2312之间的区别和关系

UTF-8 GBK UTF8 GB2312之间的区别和关系 UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM.是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码.UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强.UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示.如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包.

UTF-8 GBK UTF8 GB2312 之间的区别和关系

UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM.是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码.UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强.UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示.如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包. GBK是国家标准GB2312基础上扩容后兼容GB2312的

从字符集发展史看Unicode和UTF-8的区别

从字符集发展史看Unicode和UTF-8的区别 版权声明 本文并非本人原创,其内容来源于网络,本文根据其演绎而来,具体出出已经无法考证,在这里只好给出我所参考的连接. 知乎 https://www.zhihu.com/question/23374078/answer/69732605 于洋的回答 ASCII编码 我们都知道计算机来源于美国,并且计算机它比较笨,只知道 0 和 1 也就是电路的通和断(0或1即是一个二进制位).那么美国人怎么使用计算机来存储他们的信息呢? 他们想了一个办法.将8个

UNICODE与ANSI的区别

什么是ANSI,什么又是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit.(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容.目前,在网络.Windows系统和很多大型软件中得到应用.8bit的ANSI编码只能表示256种字符,表示26个英文字母是绰绰有余的,但是表示汉字,韩国语等有着

关于ANSI,unicode与utf-8的区别

关于ANSI,unicode与utf-8的区别 非常好的一篇文章,值得一看,特转之 关于编码ansi.GB2312.unicode与utf-8的区别 先做一个小小的试验: 在一个文件夹里,把一个txt文本(文本里包含“今天的天气非常好”这句话)分别另存为ansi.unicode.utf-8这三种编码的txt文件.然后,在该文件夹上点击右键,选择“搜索(E)…”. 搜索“天气”二字,可以搜索出ansi和unicode这两种编码的txt文件,搜索不出utf-8编码的文件. 原因: 1.中文操作系统默

GBK和UTF8有什么区别

GBK编码:是指中国的中文字符,其它它包含了简体中文与繁体中文字符,另外还有一种字符“gb2312”,这种字符仅能存储简体中文字符. UTF-8编码:它是一种全国家通过的一种编码,如果你的网站涉及到多个国家的语言,那么建议你选择UTF-8编码. GBK和UTF8有什么区别? UTF8编码格式很强大,支持所有国家的语言,正是因为它的强大,才会导致它占用的空间大小要比GBK大,对于网站打开速度而言,也是有一定影响的. GBK编码格式,它的功能少,仅限于中文字符,当然它所占用的空间大小会随着它的功能而

初识编码 gbk unicode utf-8

初识编码 gbk unicode utf-8 1. ascii 8bit 1byte(字节) 256个码位 只用到了7bit, 用到了前128个 最前面的一位是0 2. 中国人自己对计算机编码进行统计. 自己设计. 对ascii进行扩展 ANSI 16bit -> 清华同方 -> gbk GBK 放的是中文编码. 16bit 2byte 兼容ascii 3. 对所有编码进行统一. unicode. 万国码. 32bit. 4byte. 够用了但是很浪费 4. utf-8 可变长度的unicod

MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集

MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的.character-set-database:数据库字符集.character-set-table:数据库表字符集.优先级依次增加.所以一般情况下只需要设置character-set-server,而在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集.character-set-client:客户端的字符

Ansi,UTF8,Unicode,ASCII编码的区别 ---我看完了 明白了很多

来自:http://blog.csdn.net/xiongxiao/article/details/3741731 ------------------------------------------------------------------------ 近日需要不同的编码,关于上述编码,一直迷迷糊糊,查了些资料,总算大致了解了,下面全是从网上搜来的: 1.  ASCII和Ansi编码    字符内码(charcter code)指的是用来代表字符的内码.读者在输入和存储文档时都要使用内码