字符编码,,一、计算机基础知识1


一、计算机基础知识

1.运行程序的三个核心硬件    cpu    内存    硬盘2.任何一个程序要想运算,必选先有硬盘加载到内存,然后cpu去内存取指执行
3.运行着的应用程序产生的数据 必先存在内存

二.python解释器运行一个py文件(xxx.py)步骤

 1.将python解释器的代码由硬盘读到内存 2.将xxx.py以普通文本文件形式读到内存 3.python读取文件内容 识别python语法  执行相应操作 ps:普通的文本编辑器与python解释器前两步都是一样的

三、字符编码

1.字符编码表就是字符与数字的对应关系2.字符编码针对的是字符,只跟文本文件有关,与视频音频等无关3.保证不乱码在于文本文件以什么编码编的就以什么编码解

1.重点知识

1.数据由内存保存到硬盘    内存中的unicode格式二进制数字    >>>>编码(encode)>>>>>              utf-8格式的二进制数据    2.硬盘中的数据由硬盘读到内存    硬盘中的utf-8格式的二进制数据    >>>>>解码(decode)>>>>>             内存中unicode格式的二进制数据

3.
python2将py文件按照文本文件读入解释器中默认使用ASCII码(因为在开发python2解释器的unicode还没有盛行)

python3将py文件按照文本文件读入解释器中默认使用utf-8
    pycharm终端用的是utf-8格式
5.现在的计算机
      windows终端采用的是gbk
内存都是unicode
硬盘都是utf-8

2.知识总结

x = ‘上‘res1 = x.encode(‘utf-8‘)  # 将unicode编码成可以存储和传输的utf-8的二进制数据print(res1)  # b‘\xe4\xb8\x8a‘# bytes类型  字节串类型  你就把它当成二进制数据即可res2 = res1.decode(‘utf-8‘)  # 将硬盘中的utf-8格式的二进制数据解码成unicode格式的二进制数据print(res2)  #上

3.字符编码方法

ASCII码表

#只支持英文和一些特殊字符用八位二进制表示一个英文字符   所有的英文字符+符号最多也就在125位左右0000 00001111 1111 

GBK

#支持中文的编码表用2Bytes表示一个中文字符 还是用1Bytes表示一个英文字符0000 0000 0000 00001111 1111 1111 1111   最多能表示2**8-1=65535个字符基于上面的推导步骤 任何一个国家要想让计算机支持本国语言都必须自己创建一个字符与数字的对应关系日本人  shift韩国人  fuck

万国码unicode

统一用2Bytes表示所有的字符   a 0000 0000 0010 1010unicode的两个特点    1.用户在输入的时候,无论输什么字符都能够兼容万国字符    2.其他国家编码的数据由硬盘读到内存的时候unicode与其他各个国家的编码都有对应关系

“可变长编码”UTF-8

为了解决万国码占内存问题,出现了UTF-8unicode transformation 转换 format格式会将unicode的英文字符由原来的2Bytes变成1Bytes会将unicode中文字符由原来的2Bytes变成3Bytes将生僻字符变成4-6Bytes中国人吃点亏世界人占了便宜
 补充:
# 你a他
# 1Bytes|1Bytes|1Bytes|1Bytes|1Bytes|1Bytes|1Bytes 怎么区分3+1+3=你+a+他?
# 1+7bit|1+7bit|1+7bit|1+7bit|1+7bit|1+7bit|1+7bit 每个字节由1+7bit组成,其中1为标识位

3.python2

技术图片

1.python2将py文件按照文本文件读入解释器中默认使用ASCII码(因为在开发python2解释器的unicode还没有盛行)
2.文件头 # coding:utf-8 当你不指定文件头的时候,默认用ASCII存储数据,如果指定文件头那么就按照文件头的编码格式存储数据 因为所有的编码都支持英文字符,所以文件头才能够正常生效3.基于Python2 解释器开发的软件,只要是中文,前面都需要加一个u

字符编码

评论关闭