字符编码

#一、了解字符编码的知识储备
#1.运行程序的三大核心硬件
#cpu
#内存
#硬盘
#任何一个程序想要运行,必须由硬盘加载到内存,然后cpu从内存中取指
#运行应用程序产生的数据都必须先存入内存。

#2.python解释器运行一个py文件(text.py)的步骤
#1.将python解释器的代码由硬盘读入内存
#2.将text.py文件以普通文本的形式读入内存
#3.python读取文件内容,识别python语法,执行相应操作



#二、字符编码介绍
#1.什么是字符编码
#字符编码针对的是文字,只跟文本文件有关,与音频,视频等其他文件无关

#2.字符编码的输入和输出是两个过程
#人在操作计算机的时候是人能看懂的字符,但是计算机只能识别010101这样的二进制数据,所以有这样一个过程:
#输入的字符>>>>(字符编码表)>>>>二进制数据
#这个过程就是一个字符如何对应一个特定数字的标准,这个标准为字符编码

#3.字符编码发展的三个阶段
#阶段一:计算机起源于美国,最早诞生的也是基于英文考虑的ASCII码表
#ASCII:一个Bytes代表一个字符,所有的英文字符+符号最多也就在125位左右

#阶段二:为了满足中文和英文,中国订制了GBK
#GBK:2Bytes代表一个中文字符,1Bytes表示一个英文字符
#基于上面的推导步骤 任何一个国家要想让计算机支持本国语言都必须自己创建一个字符与数字的对应关系
# 日本: shift_JIS
# 韩国: Euc-kr

#阶段三:万国码 unicode
#unicode;统一用2Bytes表示所有的字符
#缺点:1.浪费空间 2.io次数增加,程序运行效率降低
#所以,当内存中的unicode编码格式数据存到硬盘的时候,会按照utf-8编码
#将unicode的英文字符由原来的2Bytes变成1Bytes
#将unicode中文字符由原来的2Bytes变成3Bytes


三、unicode与utf-8
#现在的计算机
#内存都是unicode
#硬盘都是utf-8

#(需要掌握的)
# unicode的两个特点
# 1.用户在输入的时候,无论输什么字符都能够兼容万国字符
# 2.其他国家编码的数据由硬盘读到内存的时候unicode与其他各个国家的编码都有对应关
#
#(必须掌握的)
# 数据由内存保存到硬盘
# 1.内存中的unicode格式二进制数字 >>>>编码(encode)>>>>> utf-8格式的二进制数据
#
# 硬盘中的数据由硬盘读到内存
# 1.硬盘中的utf-8格式的二进制数据 >>>>>解码(decode)>>>>> 内存中unicode格式的二进制数据
#
#保证不乱码的核心:
#字符按照什么标准而编码的,就要按照什么标准解码
#
#python2
#将py文件按照文本文件读入解释器中默认使用ASCII码(因为在开发python2解释器的unicode还没有盛行)
#python3
# 将py文件按照文本文件读入解释器中默认使用utf-8
#
#文件头
# coding:utf-8
# 1.因为所有的编码都支持英文字符,所以文件头才能够正常生效
#2.基于Python解释器开发的软件,只要是中文,前面都需要加一个u
# 为了的就是讲python2(当你不指定文件头的时候,默认用ASCII存储数据,如果指定文件头那么就按照文件头的编码格式存储数据)
#
#python3中字符串默认就是unicode编码格式的二进制数
#
#四、字符编码总结
重点
# x = '我' # 一个中文代表3个bytes
# res = x.encode('gbk') # 将内存中unicode格式编码转换成可以存储和传输utf-8的二进制数据
# print(res) # b'xcexd2'

# res1 = res.decode('gbk') # 将硬盘中utf-8格式的二进制数据解码成二进制数据unicode格式的
# print(res1) # 我
原文地址:https://www.cnblogs.com/xiongying4/p/11140532.html