计算机编码:

转载 2017年08月13日 13:39:20

上一篇有很多啰嗦,这篇做一些补充:

所有语言的字符都用同一种字符集来表示,这就是Unicode。

最初的Unicode标准UCS-2使用两个字节表示一个字符,所以你常常可以听到Unicode使用两个字节表示一个字符的说法。但过了不久有人觉得256*256太少了,还是不够用,于是出现了UCS-4标准,它使用4个字节表示一个字符,不过我们用的最多的仍然是UCS-2。

UCS(Unicode Character Set)还仅仅是字符对应码位的一张表而已,比如”汉”这个字的码位是6C49。字符具体如何传输和储存则是由UTF(UCS Transformation Format)来负责。

一开始这事很简单,直接使用UCS的码位来保存,这就是UTF-16,比如,”汉”直接使用\x6C\x49保存(UTF-16-BE),或是倒过来使用\x49\x6C保存(UTF-16-LE)。但用着用着美国人觉得自己吃了大亏,以前英文字母只需要一个字节就能保存了,现在大锅饭一吃变成了两个字节,空间消耗大了一倍……于是UTF-8横空出世。

UTF-8是一种很别扭的编码,具体表现在他是变长的,并且兼容ASCII,ASCII字符使用1字节表示。然而这里省了的必定是从别的地方抠出来的,你肯定也听说过UTF-8里中文字符使用3个字节来保存吧?4个字节保存的字符更是在泪奔……(具体UCS-2是怎么变成UTF-8的请自行搜索)

新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根
据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。

总结一下现在计算机系统通用的字符编码工作方式:
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:
这里写图片描述

浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器:
这里写图片描述

所以你看到很多网页的源码上会有类似的信息,表示该网页正是用的UTF-8编码。

计算机字符编码详解——从理论到实践

前言 最近在看《深入理解计算机系统》,读到“字符编码”时不禁想起了初学时那段痛苦的岁月,同时又没找到一篇将理论和实践结合在一起的文章,为此决定自己写一份。希望能把我走过的弯路总结出来,能帮助一些还在...
  • xuejianhui
  • xuejianhui
  • 2016年09月24日 17:52
  • 4123

计算机各种编码统一总结

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开...
  • u012922219
  • u012922219
  • 2016年06月20日 11:40
  • 537

计算机主要编码方式介绍

在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此8个二进制位就可以组合出256种状态,这就称为一个字节(byte)。也就是说,一个字节可以表示25...
  • zhangliqin1234
  • zhangliqin1234
  • 2015年11月07日 09:49
  • 1194

计算机编码基础

乱码是我们在日常的工作中经常遇到的问题,你可能从网上好不容易下载了一个炫酷的jQuery插件,但是却在打开的时候,发现某几个js文件都是类似“澶у0?閬?”这样的怪异符号,其实这就是编码和解码不一致导...
  • qq_35326718
  • qq_35326718
  • 2017年03月21日 21:27
  • 307

计算机常用编码及转换方法介绍

常用编码详解作者:李静南 摘要:本文在对各种资料整理后详细介绍各种常见编码的转换算法。一、通用字符集(UC...
  • yasmong
  • yasmong
  • 2007年10月12日 09:56
  • 3157

关于《编码:隐匿在计算机软硬件背后的语言》

版权所有,请勿转载 这段时间,拜读了一下Charles Petzold的大作>,整体来说,这个它的封面所描述的一样,永不退色的计算机科学经典,评价就不多作了,然后总结一下自己的感受。 整体而言,我...
  • IMBA123456789
  • IMBA123456789
  • 2016年03月25日 23:31
  • 1874

《编码隐藏在计算机软硬件背后的语言》读感

如果把有关JAVA这类的书据比喻成武侠小说中的擒拿手,SHH比喻成降龙十八掌,那么《编码隐藏在计算机软硬件背后的语言》这本书无疑是计算机行业的内功心法,让人能从最简单的信息产生,编码再到逻辑门,再到更...
  • whp1473
  • whp1473
  • 2016年01月27日 00:43
  • 2581

理解计算机的编码系统

我之前的很多关于计算机的疑问,包括启动,编译,程序的执行等疑问,在我对”编码“的理解加深了一步之后,我整个都豁然开朗的感觉。 最开始学C语言或者计算机的时候,都会听到ASCII码。 那么到底怎么理解A...
  • qianshanxue11
  • qianshanxue11
  • 2016年08月17日 16:31
  • 699

编码--隐匿在计算机背后的语言

第一章 电筒密谈 编码或代码通常指一种人和机器之间进行信息转换的系统。换句话说,编码便是交流。 任何两种不同的东西,在经过一定的组合后都可以代表任何种类的信息。...
  • Tomsheng321
  • Tomsheng321
  • 2015年09月30日 15:05
  • 405

计算机系统中的编码问题

一、目前常用的编码 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是2...
  • u012050154
  • u012050154
  • 2016年03月01日 17:21
  • 645
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计算机编码:
举报原因:
原因补充:

(最多只允许输入30个字)