python27乱码
‘壹’ python2.7打印中文乱码怎么办
由于python默认以ASCII编码,所以不支持中文。所以我们需要在代码前面写上“#_*_ coding:utf-8 _*_”或者#coding=utf-8.当然,如
果你代码中没有中文,就不需要加上了。
还有一个原因,由于python所运行的操作系统决定的,windows默认的编码方式是GBK编码,所以这也是一个导致中文乱码的原因之
一。
建议是不管你用什么,先在代码前面加上这一串,一定不会出现问题。
推荐学习《Python教程》。
‘贰’ python2.7中文乱码怎么破
1,读取到txt看结果
2,换个系统,不要用win
3,试试编码转化看看,这类教程也很多
还是换系统吧
‘叁’ python写文件中文乱码
解决思路:
修改excel 打开csv 文件的编码(可能会影响其它文件的打开,不作为首选方式)
修改python 打开文件的编码 utf-8 -> utf-8-sig
修改前的编码
f=open(filename,'w',encoding='utf-8')
修改后的编码
f=open(filename,'w',encoding='utf-8-sig')
‘肆’ python 乱码问题
解决方法:
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保存文件
‘伍’ Python2.7为什么Utf-8到GBK会变成乱码
程序没缩进,看着费劲!
#coding=utf-8
defrespeak():
cText=u'中文'#pyperclip.paste()
print(cText)
printrepr(cText)
print(' Afterencode:')
gbk_text=cText.encode('gbk')
print(gbk_text)
printrepr(gbk_text)
print(' Afterdecode:')
real_text=gbk_text.decode('gbk')
print(real_text)
printrepr(real_text)
if__name__=='__main__':
respeak()
[willie@localhost pys]$ python2.7 speak.py
中文
u'u4e26587'
After encode:
���
'xd6xd0xcexc4'
After decode:
中文
u'u4e26587'
‘陆’ python命令行输入中文乱码怎么办
python2.X,代码中指定了UTF-8,但是在cmd命令行窗口时,打印的中文仍然会乱码。
在python3不存在该问题
运行结果:
原因
中文windows默认的输出编码为gbk ,与脚本中定义的UTF-8不一样,所以出现了解码失败的情况。
相关推荐:《Python基础教程》
解决方法
有如下两种方法可以解决这个问题
方法一
我们可以通过先把中文解码为unicode,然后再转化为gbk来解决这个问题:
修改后运行结果:
方法二
当然,我们也可以通过改变cmd命令行窗口的输出格式来解决这个问题:
·chcp 65001 就是换成UTF-8代码页
·chcp 936 可以换回默认的GBK
但是这样就降低了脚本的兼容性,在其他环境运行的时候可能还会出现这样的错误,而且可能会影响其他脚本运行,所以推荐使用第一种方法。
‘柒’ python输出部分乱码
#-*-coding:UTF-8-*-
importsys
reload(sys)
print(sys.getdefaultencoding())#查看默认编码,我的是ascii
sys.setdefaultencoding('utf8')
print(sys.getdefaultencoding())#已经转为utf8了,应该没问题了
str=input('请输入:')#如果是python2建议用raw_input()
print'你输入的内容是:',str