前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于UTF-8编码相关知识的简单介绍

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

作者头像
海拥
发布2021-08-23 15:27:52
5670
发布2021-08-23 15:27:52
举报
文章被收录于专栏:全栈技术

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

在计算机中,二进制的每个0或者每个1都占1个二进制位(bit),由于1个二进制位只能表示01中的某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编码的基础之上,在特定的二进制位使用特定的01,以表示特定的含义,并不是编码的意义!在UTF-8中,如果使用2个字节表示1个字符,其格式固定为:

代码语言:javascript
复制
110 xxxxx	10 xxxxxx

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

代码语言:javascript
复制
1110 xxxx	10 xxxxxx	10 xxxxxx

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

代码语言:javascript
复制
11110 xxx	10 xxxxxx	10 xxxxxx	10 xxxxxx

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档