本篇描述一些概念。
1.写代码-运行代码
2.硬盘存储-内存-显示
3.为什么用python2无法打印相应的字符
4.什么叫bytes?
5.Unicode到底是什么?(码位+解释+编码)
6.编码与解码
7.python2 python3的区别
1.写代码-运行代码
2.硬盘存储-内存-显示
Python2 | python3 | ||
硬盘 | UTF-8 | UTF-8 | |
内存 | ASCII | utf-8 | 编码声明 (运行代码:在头处 #coding:utf-8 ) |
显示 |
3.为什么用python2无法打印相应的字符
python2中gb2312 和ASCII是无法打印中文的。
4.什么叫bytes?
加载进内存叫bytes
数据编码:内存中存放的形式 用repr(a)
内存中存的是str ,内存中存的是ascii
5.Unicode到底是什么?(码位+解释+编码)
a=u'hello'
告诉python的解释器,
当运行到这段代码的时候会采用unicode的形式,把字符内容加载到内存中
unicode形式不是编码
unicode的码位
5.1unicode有两种字符集
是否声明编码,内存中是不同的。
左边显示的是码位,右边是编码
5.2编码与解码
字符被加载进内存有两种形式:bytes, unicode
编码:unicode->bytes
解码:ASCII GB2312 UTF-8 ->Unicode
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:
python3
Python3 | Python2 | ||
硬盘 | UTF-8 | UTF-8 | |
内存 | unicode码位 | bytes(a=b'\xe4\xbd\xa0\xe5\xa5\xbd' b表示Bytes ) | |
编码(unicode+原封不动) |