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

Posted zchui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python2中print字符串含有汉字无法正常显示相关的知识,希望对你有一定的参考价值。

demo1
Ubuntu16,Python2,且安装过中文语言什么的。
 
#!usr/bin/python
# -*- coding: utf-8 -*-
a = "我就是中文啊"
print("a:",a)1234
输出就是:
 
(‘a:‘, ‘xe6x88x91xe5xb0xb1xe6x98xafxe4xb8xadxe6x96x87xe5x95x8a‘)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

























以上是关于Python2中print字符串含有汉字无法正常显示的主要内容,如果未能解决你的问题,请参考以下文章

vc++ mfc 中怎样判断CString中是不是含有汉字

java判断字符串中是否含有汉字

C#-判断字符中是否含有汉字的两种方法,并提取汉字

C++里怎样判断字符串中含有汉字

lua怎么判断字符串中含有汉字

iOS判断字符串中含不含有汉字