美文网首页程序开发
Unicode 与 UTF-8 之间的转换

Unicode 与 UTF-8 之间的转换

作者: Zentopia | 来源:发表于2017-01-08 21:53 被阅读207次

ASCII

在讨论 Unicode 的时候,我们不得不提及 ASCII 码。

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本 EASCII 则可以部分支持其他西欧语言。

从它的名字中我们可以了解这是美国人定义的标准,迄今为止一共定义了 128 个字符,主要支持英文字母的编码,而没有考虑到其它国家的语言,比如我国的汉字。所以,为了解决传统字符编码方案的局限诞生了 Unicode。

Unicode

Unicode 为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

Unicode 虽然解决了 ASCII 码的兼容性问题,但是它又带来了新的问题。ASCII 只需要 1 个字节就能解决英文世界的字符编码,而 Unicode 为了支持多语言,最多需求 4 个字节的编码空间。也就是说,一篇纯英文文章以 Unicode 编码存储在计算机中所消耗的内存是要大于以 ASCII 编码进行存储的,这不就造成内存资源的浪费了吗?所以这就有了 UTF-8。

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 编码。

相关文章

  • Unicode16 与 UTF-8编码之间的转换

    Unicode16 与 UTF-8 中文编码之间的转换 头文件 ————————————————转自CSDN博主「...

  • Unicode 与 UTF-8 之间的转换

    ASCII 在讨论 Unicode 的时候,我们不得不提及 ASCII 码。 ASCII(American Sta...

  • Scrapy抓取v2ex.com

    Scrapy Unicode与utf-8编码转换 1. 安装Scrapy 验证安装是否成功 安装成功 2. scr...

  • python 编码转换

    python 编码转换 主要介绍了Python的编码机制,unicode, utf-8, utf-16, GBK,...

  • Unicode与UTF-8之间的关系

    Unicode Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且...

  • 爬虫必知300点

    Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码...

  • java Unicode 转 utf-8 汉字

    从网络上下载到的网页经常是Unicode格式的,这个工具类可以将Unicode格式转换为utf-8格式,也就是讲\...

  • 字符串编码转换

    字符串编码转换 字符串编码转换涉及宽字节表示法与UTF-8表示法之间的转换、宽字节表示法与UTF-16表示法之间的...

  • 字符编码介绍及常见问题总结

    目录 了解字符编码 Unicode与UTF-8,UTF-16之间的关系 字符编码常见问题 相关资料链接 1. 了解...

  • Unicode与UTF-8之间的关联与差别

    提到编码我们常想起来的是ASCII、Unicode,字符集我们可能想到GBK、GB2312、UTF-8、但是他们之...

网友评论

  • 美环花子若野:都没写出来为什么要用不同的编码系统
    Zentopia:不同的编码系统是历史原因,比如一开始是 ASCII,因为那是美国人制订的,只需要考虑英文字母。但是后来计算机普及了,为了在计算机里显示中文,中国制订了国标码 ,再后来为了方便使用统一所有的字符就出现了 Unicode ,为了节省内存出现了 UTF-8

本文标题:Unicode 与 UTF-8 之间的转换

本文链接:https://www.haomeiwen.com/subject/fdlcbttx.html