开发过程当中,有时会遇到乱码的状况,而后不知道为何,对编码没有了解,遇到问题的时候也就一脸懵逼了,这篇文章对编码作了一个汇总。编码
写代码的时候,编码出问题的时候,就知道把编码设置为UTF-8,为啥呢?不知道。了解完编码以后,才不会只熟悉编码的拼写。code
说编码以前,咱们要先来了解一下字符cdn
什么是字符?blog
字符:字符很简单,其实就是一个表示,好比:中文字符、英文字符...开发
而后,什么是字符集it
字符集:字面上理解,就是具体共同特征的字符的集合io
说完字符以后,咱们来看一下什么是编码模板
编码 = 占用存储 + 编码表class
首先,看一下什么占用存储?即规定一个字符用多少个字节来显示,为何呢?由于计算机只能处理0|1数据,因此咱们要规定占用存储。后台
占用存储:规定一个字符用多少个字节来显示
而后,来看一下什么是编码表,编码表这个就容易了,就是规定哪一个字符对应哪一个编码。
编码表:规定字符集种每一个字符的对应关系
编码说完了,咱们来看一下编码格式。
提及编码,第一个确定要说到ASCII,这个应该是咱们接触的第一个编码格式。
因为ASCII只定义了英文字符,中文等其余复杂的字符不能表现,因此有了ASCII的扩展,如GB23十二、GBK。
GB2312,对ASCII扩展以后,支持中文。
因为GB2312只有简体中文,不能有繁体或者日文之类的,因此又扩展了GBK。
汉字的总数其实很是多,像少数名字的汉字并无在GBK中,因此后面又扩展了GB18030。
ASCII的扩展,只能知足一部分的需求,当国际化出现的时候,发现兼容不了,因此就出现了Unicode字符集,又称统一码、万国码、单一码。是对全世界语言的字符集合。
U+4AE0
)U+3FFFF
)Unicode的编码有三种,区别在于用多少个字节表示
UTF-8是Unicode编码中最经常使用的一种,这里咱们主要介绍UTF-8
下面咱们看下怎么将Unicode编码成UTF-8
咱们以 “汉” 为例
U+6C49
1110xxxx 10xxxxxx 10xxxxxx
,设为 a
6C49
转化为二进制,获得 0110 1100 0100 1001
,设为 b
11100110 10110001 10001001
,设为 c
c
转成16进制,获得 E6 B1 89
,这个就是“汉”的UTF-8编码知道了什么格式的编码是什么格式以后,后面出现乱码的时候就能够比较容易的查到缘由。咱们要作的处理比较简单,就是先后台使用同一编码。就像语言交流,同一种语言才能共通。