python2.7 - python 中文写入文件后乱码
黄舟
黄舟 2017-04-18 10:21:02
0
3
662

一个很简单的小爬虫程序

    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

请问一下各位,这个问题如何解决?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(3)
Ty80
  1. 你需要知道 kandungan 的编码方式,并考虑是否要转换

  2. 你需要用 utf-8 打开文件,然后写入

codecs.open(nama fail, mod[, pengekodan[, ralat[, penimbalan]]])

Buka fail yang dikodkan menggunakan mod yang diberikan dan kembalikan versi yang dibalut
menyediakan pengekodan/penyahkodan telus. Mod fail lalai ialah 'r'
bermaksud membuka fail dalam mod baca.

Nota Versi yang dibalut hanya akan menerima format objek yang ditakrifkan oleh
codec, iaitu objek Unicode untuk kebanyakan codec terbina dalam. Output
juga bergantung kepada codec dan biasanya akan menjadi Unicode juga. Nota Fail
sentiasa dibuka dalam mod binari, walaupun tiada mod binari dinyatakan. Ini dilakukan untuk mengelakkan kehilangan data akibat pengekodan menggunakan
nilai 8-bit. Ini bermakna tiada penukaran automatik 'n' dilakukan
pada membaca dan menulis. pengekodan menentukan pengekodan yang akan
digunakan untuk fail.
ralat mungkin diberikan untuk mentakrifkan pengendalian ralat. Ia lalai kepada
'strict' yang menyebabkan ValueError dinaikkan sekiranya berlaku ralat
pengekodan.
penimbalan mempunyai makna yang sama seperti fungsi open() terbina dalam. Ia
lalai kepada baris buffer.

import codecs
f = codecs.open("domain_test.xml", "w", "utf-8")
刘奇

Cuba tambah # -*- coding: utf-8 -*-

pada permulaan fail
大家讲道理

Tambah #coding:utf-8 pada permulaan fail

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan