什么是utf-8
8位Unicode转换格式(UTF-8)是一种用于编码各种字符的相对较新的代码约定。它是字符标识的标准,也是各种编程语言和设备的参考,有助于标准化字母,数字和其他字符的显示。在许多情况下,UTF-8取代了一种名为美国信息交换标准码(ASCII)的旧约定。ASCII处理英语语言文本所需的所有字符,但UTF-8为不使用英语或罗马字母的其他语言处理更多不同的符号集。UTF-8被认为是与ASCII向后兼容的。
utf8mb4和utf8有什么区别
utf8mb4和utf8区别如下:MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。理论上讲, UTF-8 格式使用一至六个字节,最大能编码 31 位字符。最新的 UTF-8 规范只使用一到四个字节,最大能编码21位,正好能够表示所有的 17个 Unicode 平面。utf-8编码方式如下:unicode code point table表示范围:
gb2312编码和utf-8编码有什么区别?
一、主体不同1、gb2312:是字符编码名称,属简体中文编码的一种。2、utf-8:是针对Unicode的一种可变长度字符编码。3、iso-8859-1:是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致。二、特点不同1、gb2312:是基于 1980 年发布的《信息交换用汉字编码字符集基本集》,是中文信息处理的中国国家标准,是强制执行的中文编码。2、utf-8:可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来处理ASCII字符的软件无须或只进行少部份修改后,便可继续使用。3、iso-8859-1:除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。三、作用不同1、gb2312:制定和应用为规范、推动中文信息化进程起了很大作用。2、utf-8:逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。3、iso-8859-1:符号中的大多数都可以在不进行实体引用的情况下使用,但是实体名称或实体编号为那些不容易通过键盘键入的符号提供了表达的方法。参考资料来源:百度百科-ISO-8859-1参考资料来源:百度百科-UTF-8参考资料来源:百度百科-仿宋_GB2312
UTF-8 GBK UTF8 GB2312 Unicode 之间的区别和关系
一、主体不同1、UTF-8 GBK :中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订,国家技术监督局标准化司、电子工业部科技与质量监督司1995年12月15日联合以技监标函1995 229号文件的形式。2、UTF8 GB2312: 是基于 1980 年发布的《信息交换用汉字编码字符集基本集》,是中文信息处理的中国国家标准,是强制执行的中文编码。二、特点不同1、UTF-8 GBK :向下与 GB 2312 编码兼容,向上支持 ISO 10646.1国际标准,是前者向后者过渡过程中的一个承上启下的产物。2、UTF8 GB2312:共收录 6763 个简体汉字、682 个符号,其中汉字部分:一级字 3755 个,以拼音排序,二级字 3008 个,以偏旁部首排序。该标准的制定和应用为规范、推动中文信息化进程起了很大作用。三、字节数不同1、UTF-8 GBK :是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准。2、UTF8 GB2312:标准涵盖了单字节、双字节、四字节的字符和汉字,共计约 28,000 多个。参考资料来源:百度百科-GBK字库参考资料来源:百度百科-仿宋_GB2312
Unicode 与 UTF-8 之间的转换
在讨论 Unicode 的时候,我们不得不提及 ASCII 码。
从它的名字中我们可以了解这是美国人定义的标准,迄今为止一共定义了 128 个字符,主要支持英文字母的编码,而没有考虑到其它国家的语言,比如我国的汉字。所以,为了解决传统字符编码方案的局限诞生了 Unicode。
Unicode 为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
Unicode 虽然解决了 ASCII 码的兼容性问题,但是它又带来了新的问题。ASCII 只需要 1 个字节就能解决英文世界的字符编码,而 Unicode 为了支持多语言,最多需求 4 个字节的编码空间。也就是说,一篇纯英文文章以 Unicode 编码存储在计算机中所消耗的内存是要大于以 ASCII 编码进行存储的,这不就造成内存资源的浪费了吗?所以这就有了 UTF-8。
UTF-8(8-bit Unicode Transformation Format)是一种针对 Unicode 的可变长度实现方式。准确来的说,UTF-8 并不是一种编码方式,什么是编码方式?我们上面提到的 ASCII 和 Unicode 就是编码方式,而 UTF-8 是 Unicode 的其中一种实现方式。实现方式不同于编码方式,一个字符的 Unicode 编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及处于节省空间的目的,对 Unicode 编码的实现方式有所不同。Unicode 的实现方式称为 Unicode 转换格式 (Unicode Transformation Format,简称为 UTF)。Unicode 的实现方式还包括 UTF-7、Punycode、CESU-8、SCSU、UTF-32、GB18030 等。
接下来我们就来看一下 UTF-8 是如何解决 Unicode 的空间浪费问题。根据最新的规范,UTF-8 使用一至四个字节为每个字符编码,也就是说是可变长度的。其编码中的第一个字节仍与 ASCII 兼容,这使得原来处理 ASCII 字符的软件无须或只须做少部分修改,就可以继续使用。
我们以 汉字“码” 为例,根据上表(表格来自于维基百科)进行转换。首先“码”的 Unicode 编码为 U+7801,显然位于表中第三行的 U+0800 和 U+FFFF 之间。U+7801 对应的 16 进制编码为 7801,将其转换为二进制 111 1000 0000 0001。然后,我们把得到的二进制编码从右到左依次替换到 1110xxxx 10xxxxxx 10xxxxxx 里的 x 位置上,不够的位置用 0 来补足。最终我们得到一串二进制数据 1110 0111 1010 0000 1000 0001,这串数据就是汉字“码”对应的 UTF-8 编码。