Python2中print字符串含有汉字无法正常显示

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不能加括号!

原文: https://blog.csdn.net/hehedadaq/article/details/81782532

猜你喜欢

转载自www.cnblogs.com/zchui/p/10189798.html