python 中文乱码解决方法
来源:互联网 发布:jdk 7u79 windows x64 编辑:程序博客网 时间:2024/05/29 14:39
比如我从网上下载一些信息或写个电子邮件程序下载到本地,以记事本(txt)
形式写入并保存在本地计算机,为什么看到只是英文和乱码的?该怎样做呢?
答
乱码原因:
因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件。但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了。
解决方法:
在控制台打印的地方用一个转码就ok了,打印的时候这么写:
print myname.decode('utf-8').encode('gbk')
比较通用的方法应该是:
import sys
type = sys.getfilesystemencoding()
print myname.decode('utf-8').encode(type)
下面我们看常用的中文乱码解决方法集
方法一:
在文件的开头加入编码声明:
#coding = gbk
s = '谷歌'
print s
输出结果:谷歌
方法二:
在输出时进行转码:
#coding = utf-8
s = '谷歌'
print unicode(s,'gbk')
输出结果:谷歌
txt文件中文乱码处理
某些软件,如notepad,在保存一个以utf-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xef 0xbb 0xbf,即bom)。因此我们在读取时需要自己去掉这些字符,python中的codecs module定义了这个常量
# coding=gbk
import codecs
data = open("test.txt").read()
if data[:3] == codecs.bom_utf8:
datadata = data[3:]
print data.decode("utf-8")
用unicode函数和decode方法把str转换成unicode。为什么这两个函数的参数用"gbk"呢?
第一反应是我们的编码声明里用了gbk(# coding=gbk),但真是这样?
修改一下源文件:
# coding=utf-8
s = "中文"
print unicode(s, "utf-8")
运行,报错:
traceback (most recent call last):
file "chinesetest.py", line 3, in <module>
s = unicode(s, "utf-8")
unicodedecodeerror: 'utf8' codec can't decode bytes in position 0-1: invalid data
显然,如果前面正常是因为两边都使用了gbk,那么这里我保持了两边utf-8一致,也应该正常,不至于报错。
更进一步的例子,如果我们这里转换仍然用gbk:
# coding=utf-8
s = "中文"
print unicode(s, "gbk")
结果:中文
- Python 中文乱码解决方法
- python 中文乱码解决方法
- python 中文乱码解决方法
- python中文乱码的解决方法
- python中文乱码的解决方法
- python sqlobject(mysql)中文乱码解决方法
- python代码中的中文乱码解决方法
- Python opencv 中文路径乱码解决方法
- Python连接mssql数据库乱码(中文变问号)解决方法
- Python BeautifulSoup中文乱码问题的2种解决方法
- Python 3下Matplotlib画图中文显示乱码的解决方法
- Python 操作MySQL中文显示乱码的解决方法
- Python 3下Matplotlib画图中文显示乱码的解决方法
- Python发送Http请求时,中文乱码问题的解决方法
- JbuilderX中文乱码解决方法
- Structs中文乱码解决方法
- struts2中文乱码解决方法
- SQLyog中文乱码解决方法
- 程序员求职简历要点《经典》
- oracle函数
- Linux vi中文乱码处理
- poj2367Genealogical tre
- Redhat6.5安装MySQL5.6 RPM包
- python 中文乱码解决方法
- JS AJAX
- VMWare虚拟机中安装Redhat linux操作系统图解(2)
- 文章标题
- VC6.0工程转换到VS2010版本的常见问题
- 三大框架面试题
- 【算法设计与分析基础】关灯游戏
- DICOM:dcm4che工具包如何压缩dcm文件探讨(续篇)
- maven的安装以及配置仓库