python print中文乱码问题 win10 Python2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python print中文乱码问题 win10 Python2相关的知识,希望对你有一定的参考价值。

为什么只有在输出内容中中文混合英文时才能不乱吗 单独输出中文都会乱么???

因为windows默认的编码方式是GBK,python文件保存时使用了utf-8,在读取时,python使用GBK的编码表去解utf-8编码的字节码,因为GBK与UTF-8编码不兼容,自然出现了乱码问题

解决方法:

1.直接使用 u'是' 形式,指明以unicode编码,解码方式会以顶部 #coding定义的编码方式,如果不写,以操作系统当前编码方法,建议写上#coding,因为要让操作系统编码和源文件编码经常会不一样。推荐使用这种方式

2.输出时指定解码方法  print '是'.decode("utf8") ,必须和保存的编码一致,忽略#coding的定义

3.将#coding 和保存编码改为和操作系统一样的编码,就可以直接print '是' 正常输出,也不推荐,因为需要事先知道操作系统编码,复制到其他电脑上,操作系统编码不一样就会出错

#coding=gbk
print u'是' #方法1
print '是'.decode("gbk") #方法2
print '是' #方法3

注意:

#coding指明的编码必须和保存的编码一样,不然1,3方法都会产生错误,原因也是保存编码和读取编码不一致。一般IDE能够自动根据#coding保存文件

追问

#coding=gbk

三个方法声明都这样写?
声明写成这个出现了这个报错
SyntaxError: 'gbk' codec can't decode bytes in position 9-10: illegal multibyte sequence

参考技术A 乱码原因:因为你的文件声明为 utf-8,并且也应该是用 utf-8 的编码保存的源文件。但是 windows 的本地默认编码是 cp936,也就是 gbk 编码,所以在控制台直接打印 utf-8 的字符串当然是乱码了。
解决方法:
py文件用记事本打开,另存为utf-8格式即可追问

哦哦 那请问 为什么中英文混合的字符串打印出来不是乱码?

参考技术B

python2字符串编码的问题,如果要输出中文可以使用u前缀,这样就可以直接使用了

a = u'你好'
print a

这样就可以了

追问

还是不行啊  只有中英文混合的字符串才能显示出不乱码的中文 不知道为什么

追答

这样的话就比较复杂 应当是cmd中输出时的编码的问题了

print a.decode('UTF-8').encode('GBK')
这样试一下

追问

还是不行 打印内容是纯中文比如‘你好’就是乱码 如果是 ‘a你好’这种前面有英文的就没事 如果是 ‘你好a’也就是字母在后面 就还是乱码 而且乱码的形式还不一样

追答

这个估计就是win10的原因了,我测试在win10下不管怎么调都是乱码,但是在win7下就是正常的

win7

win10

参考技术C 因为你保存的py脚本编码不是utf-8,所以乱码了。追问

什么意思 我在前面声明了啊

追答

文件编码。

参考技术D 试试"as你好啊"呢?追问

试过了 您看我第二张截图 有英文混合就没有乱码 不知道为什么

追答

你的图片里是"as啊",我叫你试试"as你好啊"

追问

一样的 只有中英文混合的字符串才能显示出不乱码的中文

追答

你试试"as你好啊"(截图)

追问

打印内容是纯中文比如‘你好’就是乱码 如果是 ‘a你好’这种前面有英文的就没事 如果是 ‘你好a’也就是字母在后面 就还是乱码 而且乱码的形式还不一样

追答

最顶上加这个呢

#coding:utf-8

还有,这与你的ide的设置也有关系,我没看出你的是哪个ide,但我的pycharm里就有这么多设置,你慢慢找一下,多尝试一下

python2.7解决输出中文乱码问题

#!/usr/bin/env python 
#coding=utf-8 
s="中文"

 

if isinstance(s, unicode): 
#s=u"中文" 
print s.encode(‘gb2312‘) 
else: 
#s="中文" 
print s.decode(‘utf-8‘).encode(‘gb2312‘)








以上是关于python print中文乱码问题 win10 Python2的主要内容,如果未能解决你的问题,请参考以下文章

perl 在win下输出中文乱码问题

win10+python3.5,使用requests抓取信息遇到chunked乱码的诡异问题。python2.7则不乱码

win10电脑系统文字乱码?

关于win10系统文字乱码?

win10系统出现乱码怎么解决

win10乱码怎么解决 win10系统电脑乱码了怎么办