Python之字符编码(Day10)

1. python解释器执行py文件的原理 ,例如python test.py

        第一阶段:python解释器启动,此时就相当于启动了一个文本编辑器

    第二阶段:python解释器相当于文本编辑器,去打开test.py文件,从硬盘上将test.py的文件内容读入到内存中(小复习:pyhon的解释性,决定了解释器只关心文件内容,不关心文件后缀名)

    第三阶段:python解释器解释执行刚刚加载到内存中test.py的代码( ps:在该阶段,即执行时,才会识别python的语法,执行文件内代码,执行到name="egon",会开辟内存空间存放字符串"egon")

 2. unicode ,UTF-8

  2.1   unicode的由来, 统一用2Bytes代表一个字符, 2**16-1=65535,可代表6万多个字符,因而兼容万国语言

  作用:  unicode:简单粗暴,所有字符都是2Bytes,优点是字符->数字的转换速度快,缺点是占用空间大

  2.2  UTF-8的由来,但对于通篇都是英文的文本来说,这种编码方式无疑是多了一倍的存储空间(二进制最终都是以电或者磁的方式存储到存储介质中的)

于是产生了UTF-8,对英文字符只用1Bytes表示,对中文字符用3Bytes

  作用:  utf-8:精准,对不同的字符用不同的长度表示,优点是节省空间,缺点是:字符->数字的转换速度慢,因为每次都需要计算出字符需要多长的Bytes才能够准确表示

  1. 内存中使用的编码是unicode,用空间换时间(程序都需要加载到内存才能运行,因而内存应该是尽可能的保证快)
  2. 硬盘中或者网络传输用utf-8,网络I/O延迟或磁盘I/O延迟要远大与utf-8的转换延迟,而且I/O应该是尽可能地节省带宽,保证数据传输的稳定性。

2.3  字符编码的使用

unicode  ------->encode--------->UTF-8

UTF-8------->decode--------->unicode

3.1  分析过程

文件从内存刷到硬盘的操作简称存文件

文件从硬盘读到内存的操作简称读文件

注释:

如果不在python文件指定头信息#-*-coding:utf-8-*-,那就使用默认的

python2中默认使用ascii,python3中默认使用utf-8

 

3.2  在Python3中两种字符串类型 str和bytes

str是unicode

#coding:utf-8
s=‘林‘ #当程序执行时,无需加u,‘林‘也会被以unicode形式保存新的内存空间中,

#s可以直接encode成任意编码格式
s.encode(‘utf-8‘)
s.encode(‘gbk‘)

print(type(s)) #<class ‘str‘>

本节总结

1.以什么编码存的就要以什么编码取出

ps:内存固定使用unicode编码

  我们可以控制的编码是往硬盘存放或者基于网络传输选择编码

2.数据是最先产生于内存中,是unicode格式,要想传输需要转成bytes格式

#unicode ---------->encode(utf-8)---------->bytes

拿到bytes--------->decode(gbk)---------->unicode

3.python3中字符串被识别成unicode

python中的字符串encode得到bytes

二.

open:

1.会向操作系统发起系统调用,操作会打开一个文件

2.在python程序中会产生一个值指向操作系统打开那个文件,我们可以把该值赋给一个x。

回收资源

1.f.close():      关闭操作系统打开的文件,即回收操作系统的资源

2.del f:   没必要做,因为在python程序运行完毕后,会自动清理与该程序有关的所有内存占用

f = open(r‘aaaaa.py‘,‘r‘,encoding=‘utf-8‘)
#print(f.read())

#print(f.readline(),end=")
print(f.readlines())
f.close()
时间: 2024-10-12 13:08:41

Python之字符编码(Day10)的相关文章

python 处理字符编码问题

今天好不容易重新开始写Python做实验,结果被字符编码虐的体无完肤.其实之前就已经比较清楚python处理字符编码的套路,但是今天白天反复的出现can't encode/decode ..., the original code not in 178之类的提示,甚是无力,后来偶尔使用了一下sys.setdefaultencoding('utf8')就解决了全部问题,真是不解. 下面还是总结一下Python几个编码设置的含义吧. 1. #coding=utf8 这种形式的注释告诉解释器,应该以c

Python常见字符编码间的转换

学习Python,字符编码间的转换是绕不过去的一只拦路虎,不把编码彻底搞明白,总有一天它会猝不及防坑你一把. Python2.x和Python3.x在字符编码的设置上也有很大区别(Python3未来将是主流,所以Python3为主),今天我们就来一起学习下. 上一篇文章里我已经简述了Python的常见编码了,这里就不再赘述了,还不清楚的小伙伴可以先去看下:     http://www.cnblogs.com/schut/p/8406897.html 一.Unicode 和 UTF-8的纠葛 U

python之----------字符编码具体原理

1.内存和硬盘都是用来存储的. CPU:速度快 硬盘:永久保存 2.文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就可以启动一个进程,是在内存中的,所以在编辑器编写的内容也都是存放在内存中的,断电后数据就丢失了.因而需要保存在硬盘上,点击保存按钮或快捷键,就把内存中的数据保存到了硬盘上.在这一点上,我们编写的py文件(没有执行时),跟编写的其他文件没有什么区别,都只是编写一堆字符而已. 3.python解释器执行py文件的原理,例如python  test.

python之字符编码(四)

一.字符编码的使用: 1.文本编辑器 unicode----->encode-------->utf-8 utf-8-------->decode---------->unicode 补充: 浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器 如果服务端encode的编码格式是utf-8, 客户端内存中收到的也是utf-8编码的结果. 2.文本编辑器nodpad++: 分析过程?什么是乱码 文件从内存刷到硬盘的操作简称存文件 文件从硬盘读到内存的操

Python:字符编码详解

相关文章 Python中文编码问题:为何在控制台下输出中文会乱码及其原理 1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号.不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础. 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节

Python基础(字符编码与文件处理)

一.了解字符编码的知识储备 1.计算机基础知识(三副图) 2.文本编辑器存取文件的原理(notepad++,Pycharm,word) 打开编辑器就启动了一个进程,是在内存中运行的,所以在编辑器写的内容在没保存之前都是存放在内存中的,断电后数据就会丢失.因而需要保存到硬盘上,点击保存按钮,就从内存中把数据刷到硬盘上. 3.Python解释器执行py文件的与原理,例如python test.py 第一阶段:python解释器启动,此时就相当于启动了一个文本编辑器. 第二阶段:python解释器相当

第六节,初识python和字符编码

程序语言的发展 机器语言 程序语言,最初的计算机语言是机器语言,完全是0和1组成的二进制串  如:01010101 11010101 汇编语言 因为01010101的字符串,冗长,不利于维护,所以产生了带助记符的汇编语言 举例:fua = 01010101    fub = 11010101 c语言 在汇编的基础上开发了c语言 有了常量,变量,字符串,等运算规则 java.c#.php.python 在c语言的基础长有发展了java.c#.php.python 等各种语言 这些语言都需要安装运行

python之字符编码

(一)什么是字符编码: 计算机中所有的数据,包括文件,图片,视频,音频等都是以二进制的方式 存储的,计算机只能识别0,1这样的机器语言.而我们想让计算机替我们工作必须能让计算机能够识别我们对它发出的指令,那么就需要一种方式把我们人类的语言翻译成计算机能听懂的语言.这个翻译的过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码. (二)字符编码的发展历程: 阶段一,ASSCII码:一个bytes代表一个字符(英文字符以及键盘上其它所有的字符)1bytes=8bit,8bit可以表

《转》Python学习(13)-Python的字符编码

转自 http://www.cnblogs.com/BeginMan/p/3166363.html 一.字符编码中ASCII.Unicode和UTF-8的区别 点击阅读:http://www.cnblogs.com/kingstarspe/p/ASCII.html 再推荐一篇相关博文:http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html 二.Unicode与ASCII Python能处理Unicode和ASCII编码,为了让这两者