[翻译]你真的知道你看到的UTF-8字符是什么吗?
翻译自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字符是什么吗?的更多相关文章
- man rsync翻译(rsync命令中文手册)
本文为命令rsync的man文档翻译,几乎所有的选项都翻译了,另外关于筛选规则部分只翻译了一部分.由于原文很多地方都比较啰嗦,所以译文中有些内容可能容易让国人疑惑,所以我个人在某些地方加上了注释.若有 ...
- python3 实现对代码文件中注释的翻译
心血来潮,昨天看见群里讨论一段图片转pdf的代码,直接拿过来发现不能用,原来是因为代码中传的文件对象不对,源码中说传递的是一个文件路径或一个文件对象.他传的是一个文件名,很是尴尬. 想了想,主要原因还 ...
- 为什么AI的翻译水平还远不能和人类相比?
为什么AI的翻译水平还远不能和人类相比? https://mp.weixin.qq.com/s/0koIt-qu9IOVxNhbFcZr1Q 作者 | SHARON ZHOU 译者 | 王天宇 编辑 ...
- hdu 1075:What Are You Talking About(字典树,经典题,字典翻译)
What Are You Talking About Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/204800 K ...
- 利用有道翻译Api实现英文翻译功能
有道翻译提供了翻译和查词的数据接口.通过数据接口,您可以获得一段文本的翻译结果或者查词结果. 通过调用有道翻译API数据接口,您可以在您的网站或应用中更灵活地定制翻译和查词功能. 第一步: ...
- 1.【使用EF Code-First方式和Fluent API来探讨EF中的关系】
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/relationship-in-entity-framework-using-code-firs ...
- JavaScript和JQuery好书推荐
其实无论你是php/python/java还是c/c++,只会自己那点知识是无法独立完成一个站点的建设的! 如果你因自己能力不足拒绝过几次亲友的建站请求,或者因合作中不了解前端是什么东西而失去过几次创 ...
- being词典案例分析
一.调研评测: 1.软件bug: 1.输入空格分号回车之后并不给用户报错,说明他的异常处理机制有问题. 2.对于中文的很多口头语和方言,并不能给出翻译或者说,也并没有给出网络搜索后的结果. 3.添加生 ...
- python字符编码(二)
一.什么是字符编码 计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电压(高低压即二进制数1,低电压即二进制数0),也就是说计算机只认识数字 编程的目的是让计算机干活,而 ...
随机推荐
- phpstorm 配置自带webserver ,配置根目录
版权声明:本文为博主原创文章,未经博主允许不得转载. from http://blog.csdn.net/pony_maggie/article/details/52367093 目录(?)[-] ...
- bzoj4716 假摔
Description [题目背景] 小Q最近喜欢上了一款游戏,名为<舰队connection>,在游戏中,小Q指挥强大的舰队南征北战,从而成为了一名 dalao.在游戏关卡的攻略中,可能 ...
- 51nod1039 x^3 mod p
X*X*X mod P = A,其中P为质数.给出P和A,求<=P的所有X. Input 第1行:一个数T,表示后面用作输入测试的数的数量.(1 <= T <= 1000) 第2 ...
- android学习笔记35——AnimationDrawable资源
AnimationDrawable资源 AnimationDrawable,代表一个动画. android既支持传统的逐帧动画(类似于电影方式,一张图片一张图片的切换),也支持通过平移.变换计算出来的 ...
- SVN学习之svn命令行下的基本操作
http://huihai.iteye.com/blog/1985751 上一节已经把svn安装完成,下来就用命令行做一些简单的操作. 1.当svn安装完成后,svn管理人员会在svn的root根目录 ...
- 黄聪:C#解析HTML DOM解析类 HtmlParser.Net 下载
下载地址:HtmlParser.Net.rar 帮助文档:htmlparser.rar 背景: HTMLParser原本是一个在sourceforge上的一个Java开源项目,使用这个Java类库可以 ...
- .Net下实现可扩展的编程方法简述
IoC控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则用来解决系统耦合问题. 控制反转还有一个名字叫做依赖注入(DI:Dependency Inje ...
- [Java Web – Maven – 1A]maven 3.3.3 for windows 配置(转)
1.环境 系统环境:windows 2008 R2 JDK VERSION: 1.7.0_10 2.下载地址 MAVEN 下载地址:http://maven.apache.org/download.c ...
- 8.4c#递归
一.概念conception: 函数体内调用本函数自身,直到符合某一条件不再继续调用. 二.应满足条件factor: (1)有反复执行的过程(调用自身): (2)有跳出反复执行过程的条件(函数出口) ...
- ZOJ 3606 Lazy Salesgirl 浙江省第九届省赛
Lazy Salesgirl Time Limit: 5 Seconds Memory Limit: 65536 KB Kochiya Sanae is a lazy girl who ma ...