python(55)-编码-解码-unicode到底是什么?+repr+

本篇描述一些概念。
1.写代码-运行代码
2.硬盘存储-内存-显示
3.为什么用python2无法打印相应的字符
4.什么叫bytes?
5.Unicode到底是什么?(码位+解释+编码)
6.编码与解码
7.python2 python3的区别

 


1.写代码-运行代码
python(55)-编码-解码-unicode到底是什么?+repr+_第1张图片

2.硬盘存储-内存-显示
 

Python2 python3
硬盘 UTF-8 UTF-8
内存 ASCII utf-8 编码声明 (运行代码:在头处 #coding:utf-8 )
显示


3.为什么用python2无法打印相应的字符
python(55)-编码-解码-unicode到底是什么?+repr+_第2张图片
   python2中gb2312 和ASCII是无法打印中文的。
4.什么叫bytes?
   
加载进内存叫bytes
    数据编码:内存中存放的形式 用repr(a)
    内存中存的是str  ,内存中存的是ascii
   
python(55)-编码-解码-unicode到底是什么?+repr+_第3张图片
   python(55)-编码-解码-unicode到底是什么?+repr+_第4张图片


5.Unicode到底是什么?(码位+解释+编码)
   

a=u'hello'
告诉python的解释器,
当运行到这段代码的时候会采用unicode的形式,把字符内容加载到内存中 
unicode形式不是编码


unicode的码位

5.1unicode有两种字符集
    
python(55)-编码-解码-unicode到底是什么?+repr+_第5张图片 
   是否声明编码,内存中是不同的。
python(55)-编码-解码-unicode到底是什么?+repr+_第6张图片
左边显示的是码位,右边是编码

5.2编码与解码
字符被加载进内存有两种形式:bytes, unicode
编码:unicode->bytes
解码:ASCII GB2312 UTF-8 ->Unicode
    python(55)-编码-解码-unicode到底是什么?+repr+_第7张图片

 python(55)-编码-解码-unicode到底是什么?+repr+_第8张图片


6.编码与解码的示例
 

repr()                   #查看内存中的编码
#英文是没有问题的
a='hello'                #存储内存中是被编码过的  
print(a.decode('ascii'))  #只能是解码  类型是unicode
print(a.decode('utf-8'))
print(a.decode('gb2312'))
print(repr(a.decode('ascii'))  u'hello'

#中文
#coding: utf-8
a='你好'
print(a.decode(('ascii'))  #打印不出
print(a.decode(('utf-8'))
print(a.decode(('gb2312'))  #打印不出






7.python2 python3的区别
 

 python2:
python(55)-编码-解码-unicode到底是什么?+repr+_第9张图片
python3
python(55)-编码-解码-unicode到底是什么?+repr+_第10张图片
 

Python3 Python2
硬盘 UTF-8 UTF-8
内存 unicode码位 bytes(a=b'\xe4\xbd\xa0\xe5\xa5\xbd' b表示Bytes )
print 编码(unicode+原封不动)

 

 

 

 

 

 

你可能感兴趣的:(python,python,开发语言,后端)