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)