字符编码大纲

'''
字符编码大纲
'''

# 字符编码

二进制和字符之间的转换过程 --> 字符编码

ascii,gbk,shit,fuck  每个国家都有自己的编码方式

美国电脑内存中的编码方式为ascii ; 中国电脑内存中的编码方式为gbk , 美国电脑无法识别中国电脑写的程序 , 中国电脑无法识别美国电脑写的程序

现在硬盘中躺着 ascii/gbk/shit/fuck 编码的文件, 他们的编码格式已经无法修改了, 所以内存中出现unicode编码, 内存中的unicode编码方式可以识别  ascii/gbk/shit/fuck 编码的文件

用unicode编码方式运行了 ascii/gbk/shit/fuck 编码的文件, 最后还是要装入硬盘, 装入硬盘早期用unicode存进去,但是 他在识别ascii的时候, 会把8位数字转换成16位数字存入硬盘, 浪费空间, 所以出现了utf8(与unicode对应,并且压缩unicode编码的字符)

utf8 能识别其他国家的编码,只识别unicode, utf8目前还不能放在内存,. 但是现在写的代码都是utf8, 历史遗留ascii/gbk/shit/fuck 编码的文件迟早消失/淘汰,要么被转换成utf8格式.所以迟早有一天内存中也是utf8.

# Python2和3字符编码的区别

1. 打开python解释器
2. python解释器相当于文本编辑器,读取二进制转化为普通字符  a = 1
3. 对转化后的普通字符进行解释(定义变量就要新开辟内存空间存放变量)

## python2

用文件指定的编码方式存储定义后的变量

如果文件指定编码为'gbk' ,那就会以gbk的形式存储变量, 本来打印的是0和1,但是终端会自动对你的0和1安装终端默认的编码转换成字符 ,如果终端的默认编码是utf8 ,乱码; 如果终端默认编码是gbk,不乱吗

如果定义变量前加上u,coding:xxx不会对他造成任何影响, 因为会用unicode编码存储变量, 终端是任何类型的编码都可以识别

## python3

用unicode编码方式存储定义后的变量



**以后写文件以什么格式存储,就以什么格式读取**



# 文件的三种打开方式

r : 只读

f.read()

w: 清空后写入(文件不存在自动创建)

f.write()

a: 追加(文件不存在自动创建)

f.write()



文本模式:t

二进制模式:b

**t/b无法单独使用,只能和r/w/a一起使用**

# with管理文件上下文

with open() as f:  # 自动关闭

# pyinstaller的使用

pip instlal pyinstaller

**切换路径到文件夹(文件夹包含img.ico和test.py这两个文件)**

pyinstaller -i img.ico -F test.py
原文地址:https://www.cnblogs.com/jinhongquan/p/11323326.html