Rumah  >  Soal Jawab  >  teks badan

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

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

黄舟黄舟2740 hari yang lalu637

membalas semua(3)saya akan balas

  • PHP中文网

    PHP中文网2017-04-18 10:23:02

    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")

    balas
    0
  • 怪我咯

    怪我咯2017-04-18 10:23:02

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

    pada permulaan fail

    balas
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:23:02

    Tambah #coding:utf-8 pada permulaan fail

    balas
    0
  • Batalbalas