demo1

Ubuntu16,Python2,且安装过中文语言什么的。

 

#!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print("a:",a)1234

输出就是:

 

('a:', '\xe6\x88\x91\xe5\xb0\xb1\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87\xe5\x95\x8a')1

各种尝试,encode和decode,都不行!咦,为啥呢?
后来才知道,Python2和Python3的输出真的不是一样的哎!

Python2中的print加了括号之后,前面有字符串,再加逗号,再加带有中文的字符串变量就是会乱码!

这种组合就是不行,所以只能打破这种组合,比如说下面这种:

 

#!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print a1234

输出:

可以看出来,没有问题

可见并不是Ubuntu的终端不能正确显示中文的问题,而是我的操作不对,但是上面的操作很明显不能满足我的所有要求,我的字符串变量应该要和字符串的说明一起出现,才比较方便观看。
我们来看看接下来的操作:

 

#!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print "a:%s"%a


#这里的操作应该是Python2的正常print了,可惜我一直都用了();
#自以为这样,不管是Python2还是python3都可以处理print函数
#至于%s的意思大家应该清楚,简单解释一下,%类似于取地址,s是string,字符串的意思。和c里面的输出原理类似。1234567

这里的输出如下:

 

a:我就是中文啊
12

美滋滋,Ubuntu下是可以解决这样的问题了。

Windows下的情况还是不一样的!

 

Windows下cmd中python2正确print输出带有汉字的字符串变量

题目起的有点长:
刚开始我在Windows下操作的时候,不管怎么都无法显示中文,就连上面最后一个demo都无法显示。
百度到的答案是,Windows中cmd的自带编码格式不支持utf-8,得在cmd中输入 cp65001,然后我就可以输入下面的代码,得到再下面的输出了:

 

#!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print "a:%s"%a1234

这时候的输出才是正常的:

 

a:我就是中文啊1

也可以试试下面的操作:
先把cmd设置成cp936,对就是在cmd中输出cp936,然后cmd会支持gbk格式。

 

a = "我就是中文啊"
print a.decode('utf-8').encode('GBK')12

这里的输出就很明显了,会直接显示中文

 

我就是中文啊1

现在发现了最终的奥妙,也就是——如果字符串中有汉字,那么,python2不能加括号!