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=gbkprint 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
解决方法:
py文件用记事本打开,另存为utf-8格式即可追问
哦哦 那请问 为什么中英文混合的字符串打印出来不是乱码?
参考技术Bpython2字符串编码的问题,如果要输出中文可以使用u前缀,这样就可以直接使用了
a = u'你好'print a
这样就可以了
还是不行啊 只有中英文混合的字符串才能显示出不乱码的中文 不知道为什么
这样的话就比较复杂 应当是cmd中输出时的编码的问题了
print a.decode('UTF-8').encode('GBK')
这样试一下
还是不行 打印内容是纯中文比如‘你好’就是乱码 如果是 ‘a你好’这种前面有英文的就没事 如果是 ‘你好a’也就是字母在后面 就还是乱码 而且乱码的形式还不一样
追答这个估计就是win10的原因了,我测试在win10下不管怎么调都是乱码,但是在win7下就是正常的
win7
win10
什么意思 我在前面声明了啊
追答文件编码。
试过了 您看我第二张截图 有英文混合就没有乱码 不知道为什么
追答你的图片里是"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的主要内容,如果未能解决你的问题,请参考以下文章
win10+python3.5,使用requests抓取信息遇到chunked乱码的诡异问题。python2.7则不乱码