Python2和Python3编码的区别

Python2

python2中有两种储存变量的形式,第一种:Unicode;第二种:按照coding头来的。

假设python2用utf8存储x='中文',当你print(x)的时候,终端接收gbk的变量x,但是windows终端编码是utf8,会乱码。

假设python2用unicode存储,终端接受的是unicode,windows终端编码是utf8还是gbk重要吗?不会乱码。

# coding:gbk
lt1 = '中文'  # utf存储的
# lt1 = ['中文']  # []让他不用终端的编码转化,显示01010101001
print lt1  # ['xe4xb8xadxe6x96x87']

lt2 = u'中文'  # u'中文'让他变成unicode  # 早期用python2定义中文,必须得加上u,让他变成unicode存储
# lt2 = [u'中文']
print lt2  # '中文'

Python3

python3只有一种存储变量的形式,unicode。

python3用unicode存储,终端接收的是unicode,widonws终端编码是utf还是gbk不重要,不会乱码

lt1 = '中文'  # == u'中文'(python2)
print(lt1)