字符编码

 

字符编码针对的是文字,只跟文本文件有关

 

文本编辑器的输入输出是两个过程

  内存 >>> 硬盘

  硬盘 >>> 内存

人在操作计算机的时候输入的是人类能看懂的字符,但计算只能识别二进制数据:

  输入的字符    >>>(字符编码表)>>>   二进制数字

 

ASCII码表:

  用八位二进制表示一个字符 0000 0000 ;1111 1111

GBK:

  用2Bytes表示一个中文字符,1Bytes表示一个英文字符 0000 0000 0000 0000;1111 1111 1111 1111 ,最多有65535个字符

万国码 unicode

  统一用2Bytes表示所有字符

  1.浪费存储空间

  2.io次数增加,程序运行效率低

  3.当内存中的unicode编码格式数据存到硬盘的时候,会按照utf-8编码

  会将unicode的英文字符由原来的2Bytes变成1Bytes
  会将unicode中文字符由原来的2Bytes变成3Bytes

ps:现在的计算机内存都是 unicode,硬盘都是utf-8

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

(必须掌握的)
数据由内存保存到硬盘
1.内存中的unicode格式二进制数字 >>>>编码(encode)>>>>> utf-8格式的二进制数据

硬盘中的数据由硬盘读到内存
1.硬盘中的utf-8格式的二进制数据 >>>>>解码(decode)>>>>> 内存中unicode格式的二进制数据
ps:不乱码:文本文件以什么编码的就以什么解码

python2 将py文件读入解释器默认ASCII
  在用python2解释器开发的时候,中文前会加‘u’,表示用unicode
python3 将文本文件读入解释器默认utf-8
python3 中字符串默认就是unicode编码格式的二进制数


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


 

 

posted @ 2019-07-05 16:59  waller  阅读(152)  评论(0编辑  收藏  举报