Unicode,UTF-8和GBK编码方式,你真的搞懂了吗?

Posted 汤米先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unicode,UTF-8和GBK编码方式,你真的搞懂了吗?相关的知识,希望对你有一定的参考价值。

前言

在介绍这些编码方式之前我们先要谈谈ASCII码,在计算机中,1 字节对应 8 位二进制数,而每位二进制数有 0、1 两种状态,因此 1 字节可以组合出 256 种状态。如果这 256 中状态每一个都对应一个符号,就能通过 1 字节的数据表示 256 个字符。于是有人就制定了一套编码,描述英语中的字符和这 8 位二进制数的对应关系,这被称为 ASCII 码。但是世界语言那么多,128个字符又怎么能够呢?于是Unicode编码就出现了。
在这里插入图片描述

一. Unicode编码

Unicode 没有规定字符对应的二进制码如何存储,它包含世界上所有的语言字符,字符顺序越靠后的,它存储所需的字节数就越多,所占的空间也就越大。如果统一成Unicode编码,乱码问题也就解决了,但是如果你写的全是英文的话(ASCII中本该用最少字节的字符),用Unicode编码比ASCII编码需要多一倍甚至更多的空间,这就会导致存储和网络传输时的一般数据会非常多,极大的浪费了空间。意识到这个问题后,UTF编码就诞生了。

二. UTF-8编码

Unicode Transformation Format,简称UTF,对unicode字符进行转换,以便于在存储和网络传输时可以节省空间。
UTF编码有3个版本:

  1. UTF-32 :使用4个字节表示所有字符。一定程度的减少了浪费。
  2. UTF-16:使用2,4两种字节表示所有字符;优先使用2个字节,否则使用4个字节。比UTF-32更有效,但还不够完美。
  3. UTF-8:使用1,2,3,4种字节表示所有字符,优先使用1字节,无法满足则增加一个字节,最多4个字节。英文占一个字节,欧洲其他语系占两个,东亚占3个,其他特殊字符占四个。完美的节省了空间

需要注意的是:
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,才转换成UTF-8编码。

三. GBK编码

GBK编码采用双字节编码方案,其编码范围:8140-FEFE,剔除xx7F码位,共23940个码位。共收录汉字和图形符号21886个,其中汉字(包括部首和构件)21003个,图形符号883个。GBK编码支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。支持中文繁体字。国家曾规定所有微软的软件进入中国都要默认GBK编码,所以win系统 默认编码也为GBK。

以上是关于Unicode,UTF-8和GBK编码方式,你真的搞懂了吗?的主要内容,如果未能解决你的问题,请参考以下文章

你真的了解 Unicode 和 UTF-8 吗?

转:Unicode,UTF-8,UTF-16,UTF-32,gb2312,gbk区别

UNICODE,GBK,UTF-8区别

python 编码问题处理

UNICODE,GBK,UTF-8区别

如何把utf-8编码的转换为gb2312