20181123(编码问题)

今日内容:

1、字符编码

2、文件操作

文件操作的读写方法

文件的打开模式

引子

1、计算机系统分为三层:

应用软件

操作系统

硬件

2、文本编辑器读一个文件的三个过程:

Ⅰ先启动文本编辑器

Ⅱ文件编辑器会将文件内容读入内存

Ⅲ将读入内存的内容显示到屏幕上

cpython解释器执行一个py文件的三个过程:

Ⅰ先启动python解释器

Ⅱpython解释器会将py文件的内容当成普通的文本内容读入内存

Ⅲ开始解释执行刚刚载入内存的代码,识别python语法

 

一、字符编码

字符编码指的是把字符编码成数字

编码的过程一定要遵循一个标准,该标准称之为字符编码表。

字符===编码(encode)===》数字

字符《==解码(decode)===数字

1、ASCII表:只有英文字符与数字的对应关系,用8bit对应一个英文字符。

一个英文字符===》1Bytes

2、GBK表:可以识别中文字符和英文字符,用8bit对应一个英文字符,用16bit对应一个中文字符

一个英文字符===》1Bytes

一个中文字符===》2Bytes

3、unicode(内存中默认使用该编码),大多数用2Bytes表示一个字符

Ⅰ可以识别万国字符

Ⅱ与各种字符编码的二进制数字都有对应关系

4、utf-8全称为Unicode Transformmation Format:

一个英文字符===》1Bytes

一个中文字符===》3Bytes

unicode二进制====编码====》utf-8二进制

unicode二进制《===解码====utf-8二进制

 

结论:

Ⅰ编码与解码

字符===编码===》数字

字符《==解码===数字

unicode二进制====编码(encode)====》utf-8二进制

unicode二进制《===解码(decode)====utf-8二进制

 

Ⅱ内存中固定使用unicode编码,我们可以改变的是数据由内存刷到硬盘时采用的编码(应该使用utf-8)

unicode的特点:

Ⅰ可以识别万国字符

Ⅱ与各种字符编码的二进制数字都有对应关系

 

Ⅲ 解决乱码问题的核心:

①字符当初以什么编码的,就应该以什么编码去读

②保证运行python程序的前两个阶段不乱码的解决方案:添加文件头

在文件首行添加#coding:文件当初存的字符编码

 

Ⅳ pyhton解释器默认的编码

python3:默认utf-8

python2:默认ASCII

 

Ⅴ python3的字符串类型在内存中存成unicode格式的二进制

 

 

 

 

posted @ 2018-11-23 19:33  real-admin  阅读(103)  评论(0编辑  收藏  举报