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

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

1.写代码-运行代码
python|python(55)-编码-解码-unicode到底是什么(+repr+)
文章图片


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

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

3.为什么用python2无法打印相应的字符
python|python(55)-编码-解码-unicode到底是什么(+repr+)
文章图片

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

python|python(55)-编码-解码-unicode到底是什么(+repr+)
文章图片



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

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

5.1unicode有两种字符集
python|python(55)-编码-解码-unicode到底是什么(+repr+)
文章图片

是否声明编码,内存中是不同的。
python|python(55)-编码-解码-unicode到底是什么(+repr+)
文章图片

左边显示的是码位,右边是编码
5.2编码与解码
字符被加载进内存有两种形式:bytes, unicode
编码:unicode->bytes
解码:ASCII GB2312 UTF-8 ->Unicode
python|python(55)-编码-解码-unicode到底是什么(+repr+)
文章图片

python|python(55)-编码-解码-unicode到底是什么(+repr+)
文章图片


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|python(55)-编码-解码-unicode到底是什么(+repr+)
文章图片

python3
python|python(55)-编码-解码-unicode到底是什么(+repr+)
文章图片


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





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

    推荐阅读