关于UTF-8编码相关知识的简单介绍

简介: 关于UTF-8编码相关知识的简单介绍

计算机能够直接识别并处理的只有二进制数据。


在计算机中,二进制的每个0或者每个1都占1个二进制位(bit),由于1个二进制位只能表示0或1中的某1个,也就只能表示2种可能性,不足以满足常规使用,所以,就设计了**字节(byte)**这种单位,每1个字节占8个二进制位,同时,字节是计算机中最基础的存储单位。


二进制是计算机必须使用的语言,而人类生活却很难适应或使用二进制,所以,早期就制定ASCII码表,在这个表中,就记录了字母、数字、符号等与二进制数据的对应关系,例如字母a对应的就是110 0001,也就说,当人类需要表达a时,计算机会将其转换为110 0001再进行处理,反之,当计算机处理数据后得到110 0001也会转换成a来显示或通过其它方式提供给人类使用,所以,这种码表其实就是记录了人类生活使用的符号与计算机能处理的二进制数据的对应关系,相当于“字典”。


ASCII码表只记录了1个字节的对应关系,所以,不足以满足中文的使用需求,如果要使用中文,至少需要2个字节!


常见的支持中文的编码有:GB2312,GBK,UTF-8等。


在Java语言中,是使用Unicode编码的。


Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。

在传输过程中,如果使用Unicode编码,会导致发送与接收可能不统一的问题,例如,可以使用1个字节表示某个字母,使用2个字节表示某个汉字,如果发送方要发出2个汉字,实际就会发出4个字节,而接收方却很难明确收到的这4个字节到底是2个汉字,还是4个字母,或1汉字2字母,或2字母1汉字,或1字母1汉字1字母。所以,为了保证数据传输,就设计UTF系列编码。


UTF,是Unicode Transformation Format的缩写,意为Unicode转换格式。

以UTF-8编码为例,它在Unicode编码的基础之上,在特定的二进制位使用特定的0或1,以表示特定的含义,并不是编码的意义!在UTF-8中,如果使用2个字节表示1个字符,其格式固定为:


110 xxxxx 10 xxxxxx


如果使用3个字节表示1个字符,其格式固定为:


1110 xxxx 10 xxxxxx 10 xxxxxx


甚至,在UTF-8中,还可以使用4个字节表示1个字符,其格式固定为:


11110 xxx 10 xxxxxx 10 xxxxxx 10 xxxxxx


可以看到,UTF-8编码最多可以使用4个字节表示1个字符,其实,常规使用的字符(全世界各国家、各民族使用的字符)使用3个字节就够了,必须使用4个字节才能表示的都是一些使用频率极低的符号。


在MySQL数据库中,将UTF-8编码细分为了utf8mb3和utf8mb4(mb = most byte),当设置为utf8时,等效于设置为utf8mb3。


目前主流的开发模式中,推荐将数据库/数据表的编码设置为utf8mb4。


注意:较低版本的MySQL并不识别utf8mb4。


目录
相关文章
|
5月前
|
存储 数据库
编码集的作用是什么?常见的编码集有什么?为什么常用utf-8?
编码集的作用是什么?常见的编码集有什么?为什么常用utf-8?
29 0
|
存储 自然语言处理 算法
UTF-8编码
通过阅读本篇文章,你可以了解到:UTF-8编码的规则。
250 0
UTF-8编码
|
存储 JavaScript 程序员
【字符编码详解】ASCII、GB2312、GBK、UTF-8、UTF-16编码与Unicode字符集
【字符编码详解】ASCII、GB2312、GBK、UTF-8、UTF-16编码与Unicode字符集
495 0
|
存储 关系型数据库 MySQL
utf8编码和utf8mb4编码(其它编码简介)
utf8编码和utf8mb4编码(其它编码简介)
297 0
|
iOS开发
Unicode 与 UTF-8 编码的转换
Unicode 与 UTF-8 编码的转换
Unicode 与 UTF-8 编码的转换
|
存储 算法 Java
Java编码ASCII、GB2312、GBK、Unicode、UTF-8、UTF-16 编码方式详解
Java编码ASCII、GB2312、GBK、Unicode、UTF-8、UTF-16 编码方式详解
313 0
|
Web App开发 JavaScript Java
编码问题 UTF-8 & GBK
记一次奇怪的编码问题。 * Meta Element vs Response Header * Meta 的作用? * 一个细节 * 细节对编码的影响 ## Meta Element vs Response Header 一个 GBK 编码页面,使用 meta 指定页面编码和使用 response header 指定页面编码。哪个优先级比较高? ###
2352 0