编码Q&A
Q:什么是编码?
A:由于计算机中所有数据都是以二进制存在,那么为了存储数字,字母,各种符号和文字,计算机必须用一套映射系统来对应。比如我在某台计算机上规定,用00010001这个二进制数表示字母a,用10010010表示中文字“好”。这种规定就是编码。
Q: 什么是ASCII?
A:显然,计算机不是一个人规定好自己怎么编码就行的。计算机需要在其使用者们之间通信。因此,最好大家采用同一套通用的编码系统。ASCII就是其中出现最早的(以标准形式出现于1967年,最后一次更新是在1986年),其全称是American Standard Code for Information Interchange(美国信息交换标准代码),是一种基于拉丁字母的的7位电脑编码系统。
Q:7位的含义是?
A:从 0000 0000 到 0111 1111之间一共有128个状态,用来表示: 26个小写字母+26个大写字母+10个数字+32个符号+33个控制代码+1个空格=128。
用16位进制表示,就是占用了 0x00到0x7f 之间这么多个字符状态。 (不同语言用不同方式表示16进制数,C语言在数前加0x或0X表示16进制数,如0x7f就是二进制的0111 1111)
Q: 基于拉丁字母?
A: 拉丁字母就是我们通常所说的26个大写英文字母+26个小写英文字母。
由于ACII出现得很早,当时只限于英语国家使用,故而认为128个字符已经足够使用。
Q:有没有别的称呼?
A:其国际标准名称是ISO/IEC 646。
Q:ASCII有什么缺点?
A:能够编码的字符太少,只能适用于美国现代英语(而且外来词naïve、café、élite的重音只能去掉)。虽然其后续这EASCII解决了西欧语言中类似这样的问题,但对于其他语言没有办法。
Q:ASCII的影响?
A:ACSII是一种ISO标准,这种标准使得含有ASCII字符的文本文件可以在几乎所有的操作系统中实现互换,而其它格式的文件是很难做到这一点的。因此ACSII编码是讨论其他编码的基础。
Q: 我经常在notepad中看到ANSI,这又是什么编码标准?
A:ANSI本来是指美国国家标准学会(American National Standards Institute)。当这个词指编码时,其真正更准确的名称是ANSI code pages。它实际上是上世纪80到90年代Windows操作系统上一系列编码的集合。对于不同国家,ANSI指适用于本国文字的字符编码标准。如中国的ANSI就是 GB2312(或其超集GBK),台湾的ANSI则是BIG5,日本的 ANSI 是JIS。它被称作ANSI其实一种名称的误用,因为这个集合中的编码压根就没通过ANSI和ISO的审核。不管怎样,这个词在Windows环境下还是坚持到如今……(参考:ANSI_code_page)
Q:太复杂了。有没有一种通用的办法,能够一揽子解决各种平台,各种国家,各种网络和机器环境下的编码问题呢?
A:终于轮到我们的大牛出场了。他就是大家耳熟能详的Unicode,又叫统一码,万国码。他使用ISO推出的通用字符集为基础,对世界上大部分文字进行整理并编码,力图统一所有编码。迄今已收纳超过11万个字符,并且仍在发展。Unicode现在被广为推崇(甚至微软也推荐),在现代操作系统、JAVA和.NET、XML中已经被默认实现。其最新版本是Unicode 6.3。
Q:听说UTF-8,UTF-16和Unicode有关系,是这样的吗?
A:是的。实际上Unicode是一整套解决方案,包括编码方式和实现方式。其实现方式就是UTF(Unicode Transformation Format)。后面的-8表示该编码采用8bit一组作为码元,而-16则表示采用16bit一组。UTF-8是万维网推荐的传输标准。
其他名词:
GB2312:兼容中国对ascii进行的字符编码扩展。全称是“信息交换用汉字编码字符集——基本集”。1980年推出。包含汉字6763个和非汉字图形字符682个。“联通”在此标准中会有错误。
GBK:与GB2312兼容,在此基础上增加到2 w多字。
BIG5:香港、台湾繁体中文区的字符集编码标准。
编码Q&A的更多相关文章
- Base64 算法原理,以及编码、解码【加密、解密】 介绍
Base64编码,是我们程序开发中经常使用到的编码方法.它是一种基于用64个可打印字符来表示二进制数据的表示方法.它通常用作存储.传输一些二进制数据编码方法!也是MIME(多用途互联网邮件扩展,主要用 ...
- MIM协议与Base64编码
MIME Protocol 1. MIME的全称是"Multipurpose Internet Mail Extensions",中译为"多用途互联网邮件扩展" ...
- Golomb及指数哥伦布编码原理介绍及实现
2017年的第一篇博文. 本文主要有以下三部分内容: 介绍了Golomb编码,及其两个变种:Golomb-Rice和Exp-Golomb的基本原理 C++实现了一个简单的BitStream库,能够方便 ...
- 我的Java开发学习之旅------>Base64的编码思想以及Java实现
Base64是一种用64个字符来表示随意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,由于二进制文件包括非常多无法显示和打印的字符.所以,假设要让记事本这种 ...
- 【Matlab编程】哈夫曼编码的Matlab实现
在前年暑假的时候,用C实现了哈夫曼编译码的功能,见文章<哈夫曼树及编译码>.不过在通信仿真中,经常要使用到Matlab编程,所以为了方便起见,这里用Matlab实现的哈夫曼编码的功能.至于 ...
- base64encode 编码原理
Base64编码,是我们程序开发中经常使用到的编码方法.它是一种基于用64个可打印字符来表示二进制数据的表示方法.它通常用作存储.传输一些二进制数据编码方法!也是MIME(多用途互联网邮件扩展,主要用 ...
- 我的Java开发学习之旅------>Base64的编码思想以及Java实现
Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的 ...
- golomb哥伦布编码——本质上就是通过0来区分商和余数
哥伦布编码是一个针对整数的变长编码方式,详细介绍可以看维基百科.这里简单介绍下: 哥伦布编码使用指定的整数 M 把输入的整数分成两部分:商数 q.余数 r. 商数当做一元编码,而余数放在后面做为可缩短 ...
- base64自定义编码表 php版本
在一次接口对接中,要用到base64自定义编码表来进行编码和解码,从网上搜索了一下,讲原理的比较多也比较透彻,提供的编码的例子但是没有解码的,以下是自己实现的一个base64自定义字典解码的例子,比较 ...
随机推荐
- Dapper.NET 使用简单举例
概述 Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的.也就是说实体类都要自己写.它没有复杂的配置文件,一个单文 ...
- 使用git进行团队合作开发
1.git 和 svn 的差异 git和svn 最大的差异在于git是分布式的管理方式而svn是集中式的管理方式.如果不习惯用代码管理工具,可能比较难理解分布式管理和集中式管理的概念.下面介绍两种工具 ...
- Build Instructions (Windows) – The Chromium Projects
转自:http://121.199.54.6/wordpress/?p=1156 原始地址:http://www.chromium.org/developers/how-tos/build-instr ...
- vector的主要操作
vector常用方法 assign() 对Vector中的元素赋值 void assign( input_iterator start, input_iterator end ); // void a ...
- dwz的form表单中url的变量替换
form表单中action的地址格式 “__URL__/edit/{xxx}”,大括号内的 “xxx” 就是变量名,主要功能是结合table组件一起使用. 下图中的删除.编辑.修改密码都是用了url变 ...
- 用户层获取TEB PEB结构地址 遍历进程模块.doc
1.fs寄存器指向TEB结构 2.在TEB+0x30地方指向PEB结构 3.在PEB+0x0C地方指向PEB_LDR_DATA结构 4.在PEB_LDR_DATA+0x1C地方就是一些动态连接库地址了 ...
- Oracle自动备份脚本(网上找到的资料)
废话不多说了,直接给大家贴代码了,具体代码如下所示: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ...
- util包下的Date与sql包下的Date之间的转换
Java中的时间类型 java.sql包下给出三个与数据库相关的日期时间类型,分别是: Date:表示日期,只有年月日,没有时分秒.会丢失时间: Time:表示时间,只有时分秒,没有年月日.会丢失日期 ...
- 领域模型(domain model)&贫血模型(anaemic domain model)&充血模型(rich domain model)
领域模型是领域内的概念类或现实世界中对象的可视化表示,又称为概念模型或分析对象模型,它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系. 贫血模型是指使用的领域对象中只有s ...
- 使用jQuery要注意的问题
1. $.find()与$.children()的区别 有如下HTML片段: 复制代码代码如下: <div id="div_four"> <input id=&q ...