编码的发展

py2的字符编码

py3的字符编码

编码的发展:

  编码表:编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码。编码表记录着我们常见的明文所对应的计算机二进制的值。计算机显示的明文内容都通过编码表转换为对应的二进制存储在磁盘,内存中。

  编码格式:

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。由于ascii码能表示符合的数量太少,无法表示完全部中午。为了处理汉字,程序员在ASCII上设置了中文的扩展表。发展如下:

GB2312(1980年):一共收录了7445个字符,包括6763个汉字和682个其它符号。

GBK1.0(1995年):收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。(windows 简体中文默认使用GBK编码表)

GB18030(2000年):正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。

     使用ASCII码表,英文占用一个字节的空间大小,中文占用两个字节的空间大小。

Unicode

由于ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它经历了了以下三个阶段的发展:

utf-32:(全部文字都占用了四个字节

utf-16:全部文字占用了两个字节

utf-8(可变长编码):不再像之前的utf-32,utf-16占用固定的字节,而是根据使用不同的语言来决定占用的空间大小。英文占用1个字节,中文占用三个字节。

  编码间的转换:

  

  如图,编码间的转换,都需要经过unicode。例如GBK转UTF-8,需要先将GBK解码为Unicode,再将Unicode编码为UTF-8。在使用py2,py3进行操作时,默认内存使用unicode编码格式,py2硬盘存储则使用ASCII编码格式,py3硬盘存储则使用utf-8编码格式

py2的字符编码 

  在py2中,str=bytes,Unicode=Unicode的字符编码。如下图。所以对字符串进行操作时,需要注意它的编码格式。需要对字符串进行合适的编码和解码才可以。默认字符串类型是以ACSII码的编码方式,保存在内存和磁盘上,故在py2中使用中文,需要在头两行声明编码方式。下面是两种声明方式: 

    1.  #! _*_coding:encoding name _*_
    2.   #coding=encoding name
    在py2中,读取GBK类型的字符串,需要将其解码为unicode,解释器会根据你界面的编码自动转换为对应的编码格式。
    

py3的字符编码

  py3在字符编码方面做了优化,str=unicode,bytes=bytes。py3将字符类型和bytes类型进行了区分。由于py解释器会自动将Unicode类型的数据转换为你输出界面的编码格式,所以使用py3时,无需过多的关注字符的编码格式。py3默认是用utf-8进行编码和解码的,所以py3在操作其他编码格式的文件时,需要声明下文件的编码类型,使用对应的类型来进行解码。

 
 

python之路-python字符编码的更多相关文章

  1. 小白的Python之路 day1 字符编码

    字符编码 python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill) ASCII(American Standard Code for Information Interc ...

  2. Python之路 day2 字符编码及转换

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa import sys print("sys default encodin ...

  3. 小白的Python之路 day2 字符编码和转码

    字符编码和转码 详细文章: http://www.cnblogs.com/yuanchenqi/articles/5956943.html http://www.diveintopython3.net ...

  4. python之旅:字符编码

    一 了解字符编码的知识储备 一 计算机基础知识 知识储备:cpu.内存.硬盘 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在 ...

  5. python基础——6(字符编码,文件操作)

    今日内容: 1.字符编码: 人识别的语言与机器识别的语言转化的媒介 *****     2.字符与字节: 字符占多少字节,字符串转化 ***     3.文件操作: 操作硬盘中的一块区域:读写操作  ...

  6. python文件操作:字符编码与文件处理

    一.字符编码 二.文件处理 一.字符编码 储备知识点: 1. 计算机系统分为三层: 应用程序 操作系统 计算机硬件 2. 运行python程序的三个步骤 1. 先启动python解释器 2. 再将py ...

  7. Python之路Python文件操作

    Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...

  8. Python之路Python内置函数、zip()、max()、min()

    Python之路Python内置函数.zip().max().min() 一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算, ...

  9. 自学Python之路-Python核心编程

    自学Python之路-Python核心编程 自学Python之路[第六回]:Python模块       6.1 自学Python6.1-模块简介    6.2 自学Python6.2-类.模块.包  ...

  10. 自学Python之路-Python基础+模块+面向对象+函数

    自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python    1.1 自学Python1.1-简介    1.2 自学Python1.2-环境的 ...

随机推荐

  1. leecode第十一题(盛最多水的容器)

    class Solution { public: int maxArea(vector<int>& height) { int len=height.size();//错过,少了i ...

  2. Qt5标准文件对话框类

    getOpenFileName()函数返回用户选择的文件名,其函数形式如下: QString QFileDialog::getOpenFileName(QWidget *parent = Q_NULL ...

  3. Python 闭包(Closure)

    Python  闭包 (Closure) 这里介绍一下python 的闭包 基本概念 闭包(closure)是函数式编程的重要的语法结构. 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函 ...

  4. vue子组件,同级组件之间的相互引用,以及传值交互

    博客地址:http://blog.csdn.net/wang_meiwei/article/details/75948844

  5. ASP.NET 4.x Web Api Odata v4 backend modify query 修改查询

    有时候我们会想给予权限添加 filter 到查询上. 比如 会员和管理员都使用了 /api/products 作为 product 查询 但是会员不应该可以看见还没有上架的货品 /api/produc ...

  6. VIM编辑器和VI编辑器的区别

    vi 和vim 的区别 写在前面:这个两个"东西"着实让我烦恼一阵子,但是自己一直没当回事,但是遇到了好几次再决定彻底把他们搞的明白,一下是我通过查找资料了解到的关于这两个编辑器的 ...

  7. Linux 各种软件的安装-Jenkins和svn结合

    通常情况下,修改代码,打包,上传,发布,这么个顺序发布程序. 有了Jenkins这些重复性的操作可以统统交给程序自动处理.甚至可以指定发布的时机,例如提交一次svn就自动发布,每天定时发布等. 1:安 ...

  8. 20165327《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20165327<Java程序设计>实验二 <Java面向对象程序设计>实验报告 实验二 <Java面向对象程序设计> 一.实验报告封面 课程:Java程序设计 班 ...

  9. c# winform 中的坐标系

    从数学角度讲,Point是一个二维矢量,包含两个公共整型属性,属性用大写X和Y(c#中公共属性一般约定以大写字母开头).当坐标不是整数值是float时,用PointF代替Point使用. 常用的Siz ...

  10. n!的位数 斯特林公式

    #include<iostream> #include<cstring> #include<string> #include<cstdio> #incl ...