最近一直在看廖雪峰老师的python网上教程,python内容简单易理解,就没整理,但是字符串编码作为一直困扰自己的问题,看了几遍文章,最终还是将其整理如下,本篇博客总结自廖雪峰老师的网上教程:http://www.liaoxuefeng.com/

  首先我们要明确三者出现的时间依次是:ASCII,Unicode,utf-8,那么为什么这样的顺序出现,就是我们记住这些编码必须要知道的。

  计算机是美国人发明的,而英文中只有127个字母,也就是我们常说的ASCII码表示的,因此8位二进制足以表示,因此就出现了ASCII码表示;

  但是,随着计算机的发展,计算机需要能够表示更多的语言,例如中文、韩文、日文等,中文几万个字,ASCII码肯定表示不了了,何况还有韩文、日文,因此这些国家又都用自己的语言表示方法,例如GB2312Shift_JISEuc-kr等,这样问题本来应该能解决编码的问题的,一个国家语言只要使用一种编码方式就行了。但是问题在于每个国家都有自己的标准,因此编码在不同语言之间就会出现冲突,因此急需一种统一的编码,能够表示“所有”国家的语言(其实是诸多国家,并不一定所有,少众语言可能还不能表示),Unicode编码营运而生。

  然而Unicode编码大一统的表示所有语言,Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。然而自然想到Unicode相对于ASCII码表示的效率很低,因为ASCII码表示一个字符1个字节,而Unicode需要2个,并且世界上绝大多数的语言都是基于英文的,那么如何才能既能表示所有的语言,又能节省表示空间呢,这样utf-8变长编码就出现了。

  utf-8采用变长编码,英文字母符号采用1字节编码,汉字通常3个字节,生僻字也有4-6字节的,这样子既统一了语言表达,又提高了效率。可见ACSII码其实是utf-8的子集。

  问题到这貌似解决了,但是计算机怎么知道你通过哪种语言表示呢,也就是计算机系统如何表示字符编码呢:

  计算机硬盘等存储的是utf-8节省存储空间,计算机内存存储的是Unicode,因此读写的时候会出现编码转换;

  网络传输一样,网络传输使用utf-8编码节省通信开销,计算机内存中存储的是Unicode,因此读写的时候也会出现编码转换。

----------------------------------------------------------------------

程序员A:借我1000元吧。
程序员B:给你凑个整数,1024元吧

字符编码的发展(ASCII、Unicode、utf-8)的更多相关文章

  1. 第48篇 字符编码探密--ASCII,UTF8,GBK,Unicode

    原文地址:http://blog.laofu.online/2017/08/22/encode-string/ ASCII 的由来 在计算机的“原始社会”,有人想把日常的使用的语言使用计算机来表示, ...

  2. (转)字符编码笔记:ASCII,Unicode和UTF-8

    字符编码笔记:ASCII,Unicode和UTF-8 访问地址:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

  3. 字符编码笔记:ASCII,Unicode和UT…

    字符编码笔记:ASCII,Unicode和UTF-8 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才 ...

  4. 字符编码笔记:ASCII,Unicode和UTF-8(转)

    字符编码笔记:ASCII,Unicode和UTF-8 作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个 ...

  5. 字符编码简介:ASCII,Unicode,UTF-8,GB2312

    字符编码简介:ASCII,Unicode,UTF-8,GB2312 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和 1两种状态,因 ...

  6. 字符编码笔记:ASCII,Unicode 和 UTF-8(理解)

    1.ASCII 码 美国制定的字符编码规则,对英语字符与二进制位之间的关系做了统一规定. 占一个字节,8 位,最多可表示 2^8 = 256 种状态(字符) 实际共有 128 个字符,只占用一个字节的 ...

  7. [转帖]字符编码笔记:ASCII,Unicode 和 UTF-8

    字符编码笔记:ASCII,Unicode 和 UTF-8 http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 转帖 ...

  8. 【转载】字符编码笔记:ASCII,Unicode和UTF-8

    字符编码笔记:ASCII,Unicode和UTF-8 作者: 阮一峰 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问题比我想象的复杂,从午饭后一直 ...

  9. Java 字符编码(一)Unicode 字符编码

    Java 字符编码(一)Unicode 字符编码 Unicode(http://www.unicode.org/versions/#TUS_Latest_Version) 是一个编码方案,说白了希望给 ...

  10. 【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础

    这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...

随机推荐

  1. SQL Server计算列

    计算列由可以使用同一表中的其他列的表达式计算得来.表达式可以是非计算列的列名.常量.函数,也可以是用一个或多个运算符连接的上述元素的任意组合.表达式不能为子查询. 例如,在 AdventureWork ...

  2. maven项目引入jar包

    今天看一下maven项目的创建和具体操作.

  3. java中计算时间差

    Calendar cale = null; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" ...

  4. 云服务器 ECS Linux 保存用户登录操作命令记录

    转载自 : https://help.aliyun.com/knowledge_detail/41210.html 云服务器 ECS Linux 如果要保存用户登录操作记录,则可以通过在 /etc/p ...

  5. [Android Tips] 29. 如何判断当前编译的是哪个 Flavor ?

    背景说明 应用需要针对不同的市场集成不同的第三方 SDK ,比如:面向海市场的版本需要集成 google-service apply plugin: 'com.google.gms.google-se ...

  6. wxshop_my移动端前端开发项目

    **************************************************************************************************** ...

  7. Service Mesh服务网格:是什么和为什么

    Service Mesh服务网格:是什么和为什么 - 好雨云帮 CSDN 博客 - CSDN博客 https://blog.csdn.net/zyqduron/article/details/8043 ...

  8. Spark源码分析 -- SchedulableBuilder

    SchedulableBuilder就是对Scheduleable tree的封装, 在Pool层面(中间节点), 完成对TaskSet的调度(FIFO, FAIR) 在TaskSetManager ...

  9. EIT: where is it now and what lies ahead?

    EIT: where is it now and what lies ahead? Electrical impedance tomography (EIT) is an emerging clini ...

  10. Spring Data 查询方法的规则定义(五)

    有句话这样说  欲练神功  挥刀自宫  请亲们先回到第一个  从Spring data 介绍 开始看  搭好环境 跟着步伐一块走 Spring Data 的方法必须严格按照它的规范进行编写,如果写错了 ...