ASCII码、Unicode、utf-8

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用8位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示255个符号。

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由16位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

Unicode的特点:

  • 直接支持全球所有语言,每个国家都可以不用再使用自己之前的旧编码了,用unicode就可以了。(就跟英语是全球统一语言一样)
  • unicode包含了跟全球所有国家编码的映射关系
  • 使用unicode表示一个字符,太浪费空间

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:使用1、2、3、4个字节表示所有字符;优先使用1个字符、无法满足则使增加一个字节,最多4个字节。英文占1个字节、欧洲语系占2个、东亚占3个,其它及特殊字符占4个。总之,UTF是为unicode编码设计的一种在存储和传输时节省空间的编码方案。

各个字符编码:

  • ASCII 占1个字节,只支持英文
  • GB2312 占2个字节,支持6700+汉字
  • GBK GB2312的升级版,支持21000+汉字
  • Shift-JIS 日本字符
  • ks_c_5601-1987 韩国编码
  • TIS-620 泰国编码
  • Unicode 2-4字节已经收录136690个字符,并还在一直不断扩张中...

python3中字符编码:

  •    py3有两种数据类型:str和bytes; str类型存unicode数据,bytse类型存bytes数据(注:无论以什么编码在内存里显示字符,存到硬盘上都是2进制)
  •   py2默认ASCII码,py3默认的utf8
  •   在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string

python3 执行代码的过程:

  1. 解释器找到代码文件,把代码字符串按文件头定义的编码加载到内存,转成unicode
  2. 把代码字符串按照语法规则进行解释,
  3. 所有的变量字符都会以unicode编码声明
          
 

常见编码错误的原因有:

  • Python解释器的默认编码
  • Python源文件文件编码
  • Terminal使用的编码
  • 操作系统的语言设置

最新文章

  1. torrent
  2. CentOS6系统openssl生成证书和自签证书
  3. display:block 不起作用
  4. [BZOJ1662][POJ3252]Round Numbers
  5. 利用IronJs在.NET程序里面跑javascript脚本
  6. uitabbarcontroller中 在设置tab bar item的image属性后不显示问题
  7. Lucene全文检索框架
  8. 分布式模式之broker模式
  9. JavaSE学习总结第18天_集合框架4
  10. SVN与eclipse整合和利用、SVN与Apache综合
  11. 《快学Scala》——基础
  12. MySQL之数据的insert-delete-update操作
  13. MySQL -- 关闭 binlog
  14. 使用fiddlercore修改网页的返回内容
  15. Rookey.Frame v1.0快速开发平台-整体介绍
  16. JS =>处理单击事件与拖动事件并存
  17. Linux查看当前使用的网卡 以及 查看某进程使用的网络带宽情况 以及 端口占用的情况
  18. Libre 6007 「网络流 24 题」方格取数 / Luogu 2774 方格取数问题 (网络流,最大流)
  19. React 属性和状态的一些总结
  20. Day 15 内置函数 , 匿名函数.

热门文章

  1. Solution -「HDU 6643」Ridiculous Netizens
  2. Solution -「HNOI 2007」「洛谷 P3185」分裂游戏
  3. Error from server error dialing backend remote error tls internal error
  4. 我们一起来学Shell - 初识shell
  5. 小程序入门心得(不谈api)
  6. 如何深入学习Java并发编程?
  7. 一个杂项PDF
  8. python数据分析与挖掘实战第二版pdf-------详细代码与实现
  9. CV之各种不熟悉但比较重要的笔记
  10. 面向对象编程(C++篇2)——构造