你真的知道你看到的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:
convert_to_webp=true" alt="" style="display:block;margin-left:auto;" />
比方, á是一个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字符是什么吗?的更多相关文章
- Bypass WAF Cookbook
PS.之前一直想把零零碎碎的知识整理下来,作为知识沉淀下来,正好借着wooyun峰会的机会将之前的流程又梳理了一遍,于是就有了下文.也希望整理的内容能给甲方工作者或则白帽子带来一些收获. 0x00 概 ...
- FusionCharts参数的详细说明和功能特性(转)
功能特性animation 是否动画显示数据,默认为1(True)showNames 是否显示横向坐标轴(x轴)标签名称ro ...
- 《Pandoc用户指南》之一
@(编程) 1. 描述 Pandoc是一个用于从一种标记格式转换为另一种的Haskell库,还是一个使用该库的命令行工具.它可以读取markdown格式和Textile格式(的子集).reStruct ...
- 【转】NI语法 JNI参考 JNI函数大全
原文网址:http://blog.sina.com.cn/s/blog_5de73d0b0101chk1.html 一.对照表 Java类型 本地类型 描述boolean ...
- ASP.NET脚本过滤-防止跨站脚本攻击[转]
ASP.Net 1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力.当用户试图用<xxxx>之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一个HttpReq ...
- ASP.NET脚本过滤-防止跨站脚本攻击(收集别人的)
ASP.Net 1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力.当用户试图用<xxxx>之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一个 HttpRe ...
- 【MySQL】MySQL零碎积累
MySQL零碎积累 ■ 在给MySQL添加新用户时可以这么操作: create user 'newUser' identified by 'password'; grant all privilege ...
- 基于Socket的Android手机视频实时传输
首先,简单介绍一下原理.主要是在手机客户端 (Android)通过实现Camera.PreviewCallback接口,在其onPreviewFrame重载函数里面获取摄像头当前图像数据, 然后通过S ...
- unicode utf8 学习记录
显示器- unicode -系统- utf8 -存储设备 Unicode是一套复杂的字符编码标准,简单来说就是将人类使用的每个所谓字符与一个非负整数对应,并且保证不同的字符对应的整数一定不同.UTF- ...
- OAuth 2.0 RFC 框架 中文
Internet Engineering Task Force (IETF) D. Hardt, Ed.Request for Comments: 6749 MicrosoftObsoletes: 5 ...
随机推荐
- 八大 IoT 安全关键技术解析
IoT 设备的增长也伴随着网络攻击的风险的增长,因此在设计产品时就必须考虑到系统的安全. 高德纳咨询公司最近的报告预测,到 2020 年,全世界将有 200.4 亿的物联网设备相互连接,且平均每天约还 ...
- macbook双网卡路由
用route命令可以解决,步骤如下:1)确定你内网的网段,如果有多个都一一列出来,例如:192.168.1.0/24,10.20.0.0/16等 2)确定你内网网卡的网关IP,通过netstat -r ...
- 【JZOJ5231】【NOIP2017模拟A组模拟8.5】序列问题 线段树
题面 100 在\(O(n^2)\)的基础上,我们可以用线段树来加速. 枚举了左端点之后,需要知道以这个左端点为起点的前缀max,前缀min. 这里只讨论前缀max,前缀min同理. 当我们倒序枚举左 ...
- “本地视频使用flashFXP上传虚拟服务器“的方法
一.视频转换格式 首先,想要在网页中直接嵌入视频,就得用video标签,而<video>支持的仅有的几种格式中,MP4是兼容性,通用性各方面相对友好的,所以,建议上传之前先转换格式并压缩. ...
- 使用session实现一次性验证码
在登录页面和各种页面,会看到有验证码输入,这样做的目的是为了防止密码猜测工具破解密码,保护了用户密码安全,验证码只能使用一次,这样就给密码猜测工具带来了很大的困难,基本上阻断了密码猜测工具的使用. 可 ...
- java-异常处理1
概要图 异常讲解流程图 一 java 异常和错误层次图 1.1 图1 1.2 图2 二 异常生的过程 1 异常可以结束函数. 同时也让程序结束了. 三 异常和错误的发生和区别 Java运行时期发生的问 ...
- Oracle中查看所有的表,用户表,列名,主键,外键
在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 : select table_name from user_ ...
- ADSL pppoe 拔号工具rp-pppoe
rp-pppoe 目前在各大发行版本都是存在的,比如Redhat/Fedora.红旗.Slackware.Debian.SuSE等系统,都是采用这个拔号软件,所以您大可不必为下载源码编译安装.只需要在 ...
- NOIP模拟17.9.22
NOIP模拟17.9.22 前进![问题描述]数轴的原点上有一只青蛙.青蛙要跳到数轴上≥
- Go开发 之 Go如何引用github包