有关编码的基础知识:

1.位 bit————>最小的单元字节 byte————>机器语言的单位1byte=8bits1KB=1024byte1MB=1024KB1GB=1024MB1TB=1024GB2. 二进制 binary八进制 octal十进制 decimal十六进制 hex

字符:是各种文字和符号的总称,包括各个国家的文字,标点符号,图形符号,数字等。
字符集:字符集是多个符号的集合,每个字符集包含的字符个数不同。
字符编码:字符集只是规定了有哪些字符,而最终决定采用哪些字符,每一 个字符用多少字节表示等问题,则是由编码来决定的。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。

常见字符集的编码介绍:

ASCII编码:

  • 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出2^8=256种状态,这被称为一个字节(byte)。

也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从000 0000到1111 1111。

  • 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。

主要显示英语和一些西欧语言,是现今最通用的单字节编码系统。

  • ASCII码一共规定了128个字符的编码。

包含内容:控制字符(回车键,退格,换行键等) 可显示字符(英文大小写,阿拉伯数字,西文符号) 扩展字符集(表格符号,计算符号,希腊字母,拉丁符号)。

  • 编码方式: 第 0-31 号及 127 号是控制字符或通讯专用字符; 第 32-126 号是字符,其中 48-57 号为 0-9 十个阿拉伯数字,65-90 号为 26 个 大写英文字母,97-122 号为 26 个英文小写字母,其余为一些标点符号,运算符号等。

比如空格“SPACE”是32(二进制0010 0000)、大写的字母A是65(二进制0100 0001);

  • 这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。

  • 在计算机存储单元中,一个 ASCII 码值占一个字节(8 个二进制位),最高位是用作奇偶检验位。

奇偶校验

奇校验(odd parity):让传输的数据(包含校验位)中1的个数为奇数。即:如果传输字节中1的个数是偶数,则校验位为“1”,奇数相反。以发送字符:1010 1010为例:

偶校验(even parity):让传输的数据(包含校验位)中1的个数为偶数。即:如果传输字节中1的个数是偶数,则校验位为“0”,奇数相反。还是以发送字符:1010 1010为例:

非ASCII编码:

  • 英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。

比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制1000 0010)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。

但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0—127表示的符号是一样的,不一样的只是128—255的这一段。

至于亚洲国家的文字,使用的符号就更多了,汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。比如,简体中文常见的编码方式是GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示256×256=65536个符号。

ANSI编码:

  • ANSI编码是一种对ASCII码的拓展:ANSI编码用0x00–0x7f (即十进制下的0到127)范围的1 个字节来表示 1 个英文字符,超出一个字节的 0x80~0xFFFF 范围来表示其他语言的其他字符。

  • 也就是说,ANSI码仅在前128(0-127)个与ASCII码相同,之后的字符全是某个国家语言的所有字符。

  • 为使计算机支持更多语言,通常使用 0x80~0xFFFF 范围的 2 个字节来表示 1 个字符。比如:汉字 ‘中’ 在ANSI编码的中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。

  • 不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。

  • 这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码

  • 在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在繁体中文Windows操作系统中,ANSI编码代表Big5;在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码。

  • 不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。

  • ANSI编码表示英文字符时用一个字节,表示中文用两个或四个字节。

GB2312 字符集:

  • 定义: 信息交换用汉字编码字符集。是中国标准的简体中文字符集,它所收录的汉字已经覆盖 99.75%的使用频率,在中国大陆和新加坡广泛使用。
  • 包含内容: GB2312 收录了简化汉字及一般字符,序号,数字,拉丁字母,日文假名, 希腊字母,俄文字母,汉语拼音符号,汉语注音字母,共 7445 个图形字符。 其中包括 6763 个汉字,一级汉字 3755 个,二级汉字 3008 个。

GBK 字符集:

  • 定义: GBK 是 GB2312 字符集的扩展,它收录了 21886 个符号,分为汉字区和图形符号区, 汉字区包括 21003 个字符。GBK 字符集主要扩展了繁体中文字的支持

BIG5 字符集:

  • 定义: 又称大五码,由台湾五家软件公司创立。因为当时台湾没有一个标准的字符集,而且 GB2312 又没有收录繁体字,所以才推出了 BIG5。
  • 包含内容: BIG5 字符集共收录了 13053 个中文字,该字符集在台湾使用。但是没有考虑到社会上流通的人名,地方用字,方言用字,化学及生物科等用字,没有包含日文平假名及片假字母。

GB18030 字符集:

  • 定义: GB18030 字符集标准解决汉字,日文假名,朝鲜语和中国少数民族文字组成 的大字符集计算机编码问题。
  • 包含内容: 该标准的字符总编码空间超过 150 万个编码位,收录了 27484 个汉字,覆盖中文,日文,朝鲜语和中国少数民族文字。满足中国大陆,香港,台湾,日 本和韩国等东南亚地区信息交换多文种,大字量,多用途,统一编码格式的 要求。

Unicode码:

  • 世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。

  • Unicode是为了统一世界各国语言的不用而出现的,统一用2个bytes代表一个字符,称为万国语言,特点:速度快,但浪费空间;

  • Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样。

Unicode的问题:

需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储

  • 这里就有两个严重的问题:

  • 第一个问题是,如何才能区别Unicode和ASCII?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?

  • 第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果Unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。

  • 它们造成的结果是:

  • 出现了Unicode的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示Unicode。

  • Unicode在很长一段时间内无法推广,直到互联网的出现。

  • Unicode 允许在同一服务器上混合使用不同语言,它为每种语言的每个字符设定了统一并且唯一的二进制编码,以满足跨平台,跨语言进行文本转换,处理的要求。

UTF-8:

  • 互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种Unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。这里的关系是,UTF-8是Unicode的实现方式之一

  • UTF-8最大的一个特点,就是它是一种变长的编码方式,可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

UTF-8的编码规则:

  • 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的Unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
  • 对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

总结:

  • 从 ASCII,GB2312,GBK 到 GB18030,这些编码方法是向下兼容的,即同一 个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一的处理。区分中文编码的方法是高字节的最高位不为 0。

  • 计算机使用的缺省编码方式就是计算机的内码。有的中文 windows 的缺省内码还是 GBK,可以通过 GB18030 升级包升级到 GB1030。不过相对 GBK 新增的字 符,普通人很难用到的,通常我们用 GBK 来指代中文 windows 内码。

计算机常见的编码规范相关推荐

  1. 密码生成常见的编码规则

    密码生成常见的编码规则 人们在创建密码的时候,往往有一些常见的习惯,例如在密码后面加上出生年.这样操作的目的是为了提升密码的强度.而渗透测试中常见的密码生成工具为了提高破解几率,就会总结这些习惯,从而 ...

  2. 编码规范汇总【持续更新】

    目录 前言 规范标准 C++规范 C#规范 规范记录 命名 硬编码 单例类[线程安全] Qt定义类[隐式内存共享] 前言 作为软件工程师,出产物就应该具备工程的健壮性和美观性.因此代码规范是作为软件工 ...

  3. 计算机常见编码一. 有关编码的基础知识字符集

    计算机常见编码一. 有关编码的基础知识 1. 位 bit 最小的单元 字节 byte 机器语言的单位 1byte=8bits 1KB=1024byte 1MB=1024KB 1GB=1024MB 2. ...

  4. iOS:Cocoa编码规范 -[译]Coding Guidelines for Cocoa

    转载:http://blog.csdn.net/houseq/article/details/27369043 原文地址:https://developer.apple.com/library/mac ...

  5. 公司让我编写一套自己的【Java 编码规范】作为员工季度考核标准?!参照Alibaba

    目录 一.编码规范 (一)命名风格 (二)常量定义 (三)代码格式 (四)OOP规范 (五)集合处理 (六)并发处理 (七)控制语句 (八)注释规范 (九)其它 二.SVN操作规范 三.异常日志 (一 ...

  6. C++编码规范与指导zt

    推荐浏览设置: 屏幕分辨率:≥ 1024x768 字体:中(Ctrl+鼠标滚轮设置) 最大化本窗口 文档控制 版本号 修改时间 修改内容 修改人 审稿人 1.0 2004-07-22 创建 白杨 田振 ...

  7. Unicode字符编码规范

    http://www.aoxiang.org 2006-4-2 10:48:02 Unicode是一种字符编码规范 . 先从ASCII说起.ASCII是用来表示英文字符的一种编码规范,每个ASCII字 ...

  8. Unicode编码规范(摘抄)

    http://www.aoxiang.org 2006-4-2 10:48:02 Unicode是一种字符编码规范 . 先从ASCII说起.ASCII是用来表示英文字符的一种编码规范,每个ASCII字 ...

  9. 软件开发编码规范_如果您只喜欢编码,请不要成为软件开发人员

    软件开发编码规范 If you are starting now or thinking about to start a software development career. Or even i ...

  10. html css js 编码规范

    目录 一.HTML编码规范 1. img标签要写alt属性 2. 单标签不要写闭合标签 3. 自定义属性要以data-开头 4. td要在tr里面,li要在ul/ol里面 5. ul/ol的直接子元素 ...

最新文章

  1. IIS 7.5 去掉index.php 西数服务器
  2. 英特尔新任 CEO 的“开挂”人生
  3. linux内核如何安装vim,如何在Linux 中安装和使用 PacVim?
  4. 【LeetCode从零单排】No19.RemoveNthNodeFromEndofList
  5. Linux系统检测命令有哪些
  6. Linux下对文件操作时出现乱码怎么办?
  7. uni-app 用户地理位置授权
  8. 利用Python把四张图片按照顺序拼接起来
  9. sql unicode转中文_SELECT语句《SQL必知必会》
  10. Typora 常用技巧
  11. WORD如何修改自动编号的起始编号值?
  12. 如何从SQL Server中的SELECT语句更新
  13. 1.5 Linux文件目录创建与删除
  14. conda clean -i
  15. 随机生成器,从给定列表中随机抽取一个元素
  16. 手机自动下载当天voa听力
  17. 数据结构笔记【全-408统考】【附思维导图】
  18. 主板4线风扇原理分析
  19. 数据结构---尾部插入法
  20. 那个找不到工作的iOS程序猿

热门文章

  1. 98版五笔字型实用学习教程
  2. ubuntu 18.04 e1000e网卡驱动安装
  3. 【操作系统⑩】——进程死锁【银行家算法+详细样例 进程死锁的预防机制、避免机制、检测与解决】
  4. 手把手教你玩转QQ的原创表情
  5. Threejs/Webgl智慧城市部分效果实现
  6. DNF最新纯图色脚本框架2022-4-27
  7. 基于JAVA超市自助购物系统的设计与实现
  8. 天堂2地点坐标(SQL语句,可直接导入数据库)
  9. C#通过接口获取税控盘基本信息
  10. 增值税防伪税控系统到底是什么呢?