字符编码

Posted xp1315458571

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符编码相关的知识,希望对你有一定的参考价值。

一、计算机基础知识

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 0000
1111 1111 

GBK

#支持中文的编码表
用2Bytes表示一个中文字符 还是用1Bytes表示一个英文字符
0000 0000 0000 0000
1111 1111 1111 1111   最多能表示2**8-1=65535个字符

基于上面的推导步骤 任何一个国家要想让计算机支持本国语言都必须自己创建一个字符与数字的对应关系
日本人  shift
韩国人  fuck

万国码unicode

统一用2Bytes表示所有的字符   
a 0000 0000 0010 1010

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

“可变长编码”UTF-8

为了解决万国码占内存问题,出现了UTF-8

unicode 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

 

 

 

 

以上是关于字符编码的主要内容,如果未能解决你的问题,请参考以下文章

如何查看字符编码类型

Python 字符集编码 - UTF-8 编码

unicode字符集是多少位的字符编码

刨根究底字符编码之九——字符编码方案的演变与字节序

公众号回复表情 和 关于字符集和字符编码

编码方式的编码方式