翻译自http://www.pixelstech.net/article/1397877200-You-know-what-UTF-8-is-when-you-see-it-

Source : sonic0002

如有版权问题请告知.

在编码的时候我们经常会看到UTF-8, GB 2312之类的字样. 可你真的了解这些编码的意义吗? 我们为什么需要这些编码呢? 在这篇文章里,  Julián
Solórzano
将会给我们介绍世界上使用范围最广/包含所有不同字符集的编码规则.

UTF-8是一种Unicode字符的编码方式, 它使用8个bit. Unicode是一种用来对不同语言中大多数字符进行编码的标准.

大约40年前, ASCII诞生了. 原始的ASCII包含128个字符, 包括大小写英文, 数字和标点符号, 每个字符使用7个bit编码.

随后出现了"拓展ASCII", 它使用8个bit来包含更多的字符, 比如 á, é, ü. 对于这额外的128个字符空位, 出现了许多不同的代码映射集. 比如latin1, windows-1252等等(对于这128个额外字符, 没有固定的对应表, 取决于种族语言和操作系统等).

很明显128(7bit)或256(8bit)个字符空位对于同时代表众多字符都是不够的. 因此Unicode作为一个可以代表几乎所有文字系统的标准被提出了. 目前它包含超过1000,000个字符(code point). UTF-8 是一种用来编码这些字符的方式. 在UTF-8中的一个字符可以由1个或更多字节(byte)组成. 前128个字符和ASCII码是一样的. 之后的字符就使用超过1个字节来进行编码. 一个独立字符中的每个字节都以一个特殊的位顺序开头来表示此字节和前一个字节描述的是同一个字符.

Table from Wikipedia:

比如, á是一个Unicode字符编码,
U+00E1, 或者 225(十进制)

225的二进制是11100001.

因为需要8个bit来表示这个数字(225), 因此在UTF-8中我们需要使用2个字节来对它进行编码(原ASCII表中的前128个字符才使用1个字节, 它们只用7个bit). 所以, 使用第一张表作为参考, 我们可以把这个字符编码成:

11000011
10100001

粗体部分是数字225,
非粗体的是编码必须的模式.

因此,
如果你打开了一个包含字节c3 a1的文本文件, 并且程序认为编码格式是UTF-8, 你就会看到
á.

[翻译]你真的知道你看到的UTF-8字符是什么吗?的更多相关文章

  1. man rsync翻译(rsync命令中文手册)

    本文为命令rsync的man文档翻译,几乎所有的选项都翻译了,另外关于筛选规则部分只翻译了一部分.由于原文很多地方都比较啰嗦,所以译文中有些内容可能容易让国人疑惑,所以我个人在某些地方加上了注释.若有 ...

  2. python3 实现对代码文件中注释的翻译

    心血来潮,昨天看见群里讨论一段图片转pdf的代码,直接拿过来发现不能用,原来是因为代码中传的文件对象不对,源码中说传递的是一个文件路径或一个文件对象.他传的是一个文件名,很是尴尬. 想了想,主要原因还 ...

  3. 为什么AI的翻译水平还远不能和人类相比?

    为什么AI的翻译水平还远不能和人类相比? https://mp.weixin.qq.com/s/0koIt-qu9IOVxNhbFcZr1Q 作者 | SHARON ZHOU 译者 | 王天宇 编辑 ...

  4. hdu 1075:What Are You Talking About(字典树,经典题,字典翻译)

    What Are You Talking About Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/204800 K ...

  5. 利用有道翻译Api实现英文翻译功能

    有道翻译提供了翻译和查词的数据接口.通过数据接口,您可以获得一段文本的翻译结果或者查词结果.       通过调用有道翻译API数据接口,您可以在您的网站或应用中更灵活地定制翻译和查词功能. 第一步: ...

  6. 1.【使用EF Code-First方式和Fluent API来探讨EF中的关系】

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/relationship-in-entity-framework-using-code-firs ...

  7. JavaScript和JQuery好书推荐

    其实无论你是php/python/java还是c/c++,只会自己那点知识是无法独立完成一个站点的建设的! 如果你因自己能力不足拒绝过几次亲友的建站请求,或者因合作中不了解前端是什么东西而失去过几次创 ...

  8. being词典案例分析

    一.调研评测: 1.软件bug: 1.输入空格分号回车之后并不给用户报错,说明他的异常处理机制有问题. 2.对于中文的很多口头语和方言,并不能给出翻译或者说,也并没有给出网络搜索后的结果. 3.添加生 ...

  9. python字符编码(二)

    一.什么是字符编码 计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电压(高低压即二进制数1,低电压即二进制数0),也就是说计算机只认识数字 编程的目的是让计算机干活,而 ...

随机推荐

  1. SPOJ #10657. LOGIC (riddle)

    1 line in Ruby(2.0), 36B: p (1..n=gets.to_i).reduce(:*)+2**n-n

  2. bzoj3743 Kamp

    Description 一颗树n个点,n-1条边,经过每条边都要花费一定的时间,任意两个点都是联通的. 有K个人(分布在K个不同的点)要集中到一个点举行聚会. 聚会结束后需要一辆车从举行聚会的这点出发 ...

  3. Python编写一个Python脚本

    我想要一个可以为我的所有重要文件创建备份的程序.(下面测试环境为python2.7) 1.backup_ver1.py #!/usr/bin/python import os import time ...

  4. Windows组策略同步问题

    每当,我们在域控制器上建立一个组策略的时候,我们很希望它能在线马上同步到所有的客户端上去. 当windows2008的域控上的做法:登录到每台windows客户端然后执行,gpupdate /forc ...

  5. [系统集成] CI持续集成项目简介

    一.问题的产生 公司的多个部门围绕着产品开发.测试.发布.维护,设置有不同的岗位和系统,这些岗位和系统缺少有效的整合,没有实现自动化,效率不是很高,因此就有了CI(持续集成)的项目需求. 二.解决方案 ...

  6. JavaScript 设置、读取Cookie

    1.设置Cookie //设置cookie function setCookie(cookieName, cookieValue, cookieExpires, cookiePath) { cooki ...

  7. CF 500D New Year Santa Network tree 期望 好题

    New Year is coming in Tree World! In this world, as the name implies, there are n cities connected b ...

  8. 自己动手写ORM

    http://blog.csdn.net/sundacheng1989/article/category/1350100

  9. linux常用命令 3

    示例定义的 mytest或者test 用户 mygroup 用户组 cat /etc/group 查看组 groupname:x:groupId:其他成员 组名:x(加密):组ID:组成员cat /e ...

  10. $.ajax()中dataType

    $.ajax()中dataType的默认值为TEXT,如果没有指明json,而返回来的数据又就是json格式,则无法显示.!!