编码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自定义字典解码的例子,比较 ...
随机推荐
- SQL中的多表查询,以及JOIN的顺序重要么?
说法是,一般来说,JOIN的顺序不重要,除非你要自己定制driving table. 示例: SELECT a.account_id, c.fed_id, e.fname, e.lname -> ...
- 【20140113-2】MyEclipse生成javadoc时出错:编码GBK的不可映射字符
今天生成java doc文档时,出现了如下所示的错误: 正在装入软件包 com.wisdom.test 的源文件...F:\workspace\StringUtils\src\com\wisdom\t ...
- POJ2762 Going from u to v or from v to u(单连通 缩点)
判断图是否单连通,先用强连通分图处理,再拓扑排序,需注意: 符合要求的不一定是链拓扑排序列结果唯一,即在队列中的元素始终只有一个 #include<cstdio> #include< ...
- WPF ListView展示层叠信息
通常我们在ListView中展示一列同类数据,例如城市名称.不过可以对ListView的DataTemplate稍作修改,让其显示层叠信息.例如:需要在ListView中显示省份和省份对应的城市名称. ...
- 怎样打开64位 Ubuntu 的32位支持功能?
转自:http://jingyan.baidu.com/article/7082dc1c539c15e40a89bd3e.html 大多数使用基于 Ubuntu/Debian 的发行版的人都更倾向于选 ...
- WORD2007多级列表
转自玄鸟翩翩 http://hi.baidu.com/shine_yen http://hi.baidu.com/shine_yen/item/01ff2255043bc1aeacc85722 用Wo ...
- js String对象
字符串(String) 字符串(String)使用长度属性length来计算字符串的长度: 在字符串中查找字符串 字符串使用 indexOf() 来定位字符串中某一个指定的字符首次出现的位置: 实例 ...
- css的重置和原子类的使用
@charset "utf-8";/* Reset Definitions*/body, div, p, a, ul, ol, li, dl, dt, dd, h1, h2, h3 ...
- iOS10 UI教程管理层次结构
iOS10 UI教程管理层次结构 iOS10 UI教程管理层次结构,在一个应用程序中,如果存在多个层次结构,就需要对这些层次结构进行管理.在UIView类中提供了可以用来管理层次结构的方法,让开发者可 ...
- CSS3-网站导航,transform,transition
网站导航: 1.a:link visited hover active的顺序是很重要的,如果改变顺序,则hover以及active的状态不起作用 2.<a href=" ...