编码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自定义字典解码的例子,比较 ...
随机推荐
- 【JAVA集合框架之Set】
一.Set概述. Set集合的特点是元素不允许重复,而且是无序的(添加和取出的顺序不一致). Set接口中的方法和Collection接口中的方法几乎相同,略. Set接口下常用的两个类:HashSe ...
- 【ubuntu 】常见错误--Could not get lock /var/lib/dpkg/lock
ubuntu 常见错误--Could not get lock /var/lib/dpkg/lock 通过终端安装程序sudo apt-get install xxx时出错: E: Could not ...
- java创建线程的几种方式
1.继承Thread类 /** * @author Ash * @date: 2016年8月6日 下午10:56:45 * @func: 通过继承Thread类来实现多线程 * @email 4086 ...
- 使用zookeeper实现分布式锁
简介: 核心是解决资源竞争的问题 分布式系统中经常需要协调多进程或者多台机器之间的同步问题,得益于zookeeper,实现了一个分布式的共享锁,方便在多台服务器之间竞争资源时,来协调各系统之间的协作和 ...
- 2-01SQL的概述
SQL: Structured Query Languaage:结构化查询语言. 美国国家标准局ANSI. 国际标准化组织. T-SQL: Transact-SQL. T-SQL是SQL的扩展集. 对 ...
- php判断当前的访问是手机还是电脑
<?php function check_wap() { if (isset($_SERVER['HTTP_VIA'])) return true; if (isset($_SERVER['HT ...
- WPF程序最小化到任务通知栏
我们通常使用的桌面软件,都可以最小化到任务通知栏,并且可以从任务通知栏再打开当前软件,或者通过软件的快捷方式从任务通知栏呼出. 我们可以通过下面的方式把WPF程序最小化到任务栏.由于WPF并没有实现N ...
- C++ 简单的学生信息管理系统
// // main.cpp // 2013-7-17作业1 // // Created by 丁小未 on 13-7-17. // Copyright (c) 2013年 dingxiaowei. ...
- C语言判断文件是否存在(转)
int access(const char *filename, int amode); amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1. 这个函 ...
- 视觉差双排listview效果
https://github.com/bavariama1/ListBuddies