python2.7 - python 中文写入文件后乱码
问题描述
一个很简单的小爬虫程序
for i in L:content = urllib2.urlopen(’http://X.X.X.X/cgi-bin/GetDomainOwnerInfo?domain=%s’ %i)html = content.read()with open(’domain_test.xml’,’a’) as f: f.write(html) print html
print 的结果是中文:
<domaininfo strDomain='XXX.com.' strOwner='XXX' strDepartment='云平台部' strBusiness='[互联网业务系统 - XXX' strUser='XXX;'>
但直接打开xml文本的时候却是乱码:
<domaininfo strDomain='XXX.com.' strOwner='XXX' strDepartment='云平å°éƒ¨' strBusiness='[互è”网业务系统 - 第三方应用]' StrUser='XXX;'>
Windows 7 操作系统,python 2.7
请问一下各位,这个问题如何解决?
问题解答
回答1:你需要知道 content 的编码方式,并考虑是否要转换
你需要用 utf-8 打开文件,然后写入
codecs.open(filename, mode[, encoding[, errors[, buffering]]])
Open an encoded file using the given mode and return a wrapped versionproviding transparent encoding/decoding. The default file mode is ’r’meaning to open the file in read mode.
Note The wrapped version will only accept the object format defined bythe codecs, i.e. Unicode objects for most built-in codecs. Output isalso codec-dependent and will usually be Unicode as well. Note Filesare always opened in binary mode, even if no binary mode was specified. This is done to avoid data loss due to encodings using8-bit values. This means that no automatic conversion of ’n’ is doneon reading and writing. encoding specifies the encoding which is to beused for the file.errors may be given to define the error handling. It defaults to’strict’ which causes a ValueError to be raised in case an encodingerror occurs.buffering has the same meaning as for the built-in open() function. Itdefaults to line buffered.
import codecsf = codecs.open('domain_test.xml', 'w', 'utf-8')回答2:
试试在文件开头加上 # -*- coding: utf-8 -*-
回答3:在文件开头加上 #coding:utf-8
相关文章:
1. javascript - 引入 simditor,但是显示标签,这个怎么解决。2. android - 目前有哪些用Vue.js开发移动App的方案?3. 为什么要通过常量的方式拐弯抹角的写呢,直接写DSN之类的不好吗4. python - 关于flask 静态文件配置404的问题5. python - scrapy获取网页指定内容,后翻到下一页继续,固定循环次数。。问题6. defined这个实验代码我这里不对哇7. python - 一个关于爬虫的问题8. linux - 为公司配置服务器,要求在上面装win7的虚拟机,那我还需要装桌面环境吗?9. javascript - 仿着echarts官网的地图做了个例子,但是只显示出来了地点,没有画出飞机动态效果??急10. android - 安卓实现类似QQ刚换聊天背景的功能