字符编码类型-课堂笔记(很重要,还不是很懂)

字符编码类型

1 字符编码
将人类的字符编码/转换成计算机能识别的数字
这种转换必须遵循一套固定的标准,该标准无非是人类字符与数字的对应关系,称之为字符编码表
每一种字符编码表都和unicode之间有一种映射关系
ascii码里最早时只用到7bit,128种表示方式就能对应英文和特殊字符的需求。后来因为要增加特殊字符和其他国家语言的加入,
第八位开始启用。最高能表示0-255,共256种表示。




A---->0000 0000
B---->0000 0001
c---->0000 0002
d---->0000 0003

bit:二进制位
Bytes:字节

ASCII码表:用1Bytes表示一个英文字符
1英文字符=8bit=1Bytes


GBK:用2Bytes表示一个中文字符,1Bytes去表示英文字符

utf-8 #unicode tranform format-8
utf-8 用1Bytes表示英文,用3Bytes表示中文

unicode:内存中使用的是unicode编码,unicode把全世界的字符都建立好对应关系
用2Bytes去表示一个字符,unicode里所有的字符都是两个字节来表示

0000 0000 0000 0000 8bit + 8bit

python 解释器执行功能:
第二步 读取文件时如果环境默认的编码和设置打开的编码不同,则报错。
第三步 识别语法并执行
在pycharm里设置文件头,设置的文件头就是文件以什么形式打开。
比如设置的gbk,文件以gbk形式打开,通过和万能的unicode映射关系,转换为二进制读入到内存里。
在python2解释器里,读入到内存里的文件,文件里面的变量值会开辟一个新的空间,unicode会(!!!!忘记了!!!看视频再补充)
python3解释器里,unicode会直接放到开辟的空间里,取变量时可以通过任意字符编码表进行转换。
pycharm设置文件头,下面存储的格式随着文件头变化。


字符编码需要记住的概念
01 内存中固定使用unicode编码(只要是现在的电脑,不论是python2还是python3解释器),我们唯一可
以改变的存储到硬盘时使用的编码
02 要想保证存取文件不乱码,应该保证文档当初是以什么编码格式存的,就应该以什么编码格式去读取

03 python3解释器默认编码是UTF-8
python2解释器默认编码是ASCII


在python2中有两种字符串编码格式
1、unicode:
x=u'上'
2、unicode编码后的结果
x='上' #如果文件头为coding:utf-8,那么"上"被存成utf-8格式的二进制

在python3只有一种字符串编码格式:
1、unicode
x='上’

04 编码与解码
unicode-------编码encode-------->gbk
unicode<-------解码decode--------gbk

#***
#coding:gbk
x='上’
x.decode('gbk')

coding:gbk
x=u'上'
x.encode('gbk')
x.encode('utf-8')


在python3中(*****)
x='上' 在内存里,是unicode格式,所以只能编码。
x只能进行编码
x.encode('gbk')

总结python2与python3:
(***)
在python2中的字符粗类型str都是unicode按照文件头的指定的编码,编码之后的结果
在python2中也可以制造unicode编码的字符串。需要在字符串前加u

(*****)
在python3中的字符串类型str都是unicode编码的
所以python3中的字符串类型可以编码成其他字符编码格式,编码的结果
是bytes类型
原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9123162.html