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

一个很简单的小爬虫程序

    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

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

黄舟
黄舟

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

répondre à tous(3)
Ty80
  1. 你需要知道 contenu 的编码方式,并考虑是否要转换

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

codecs.open(filename, mode[, encoding[, erreurs[, buffering]]])

Ouvrez un fichier codé en utilisant le mode donné et renvoyez une version enveloppée
fournissant un encodage/décodage transparent. Le mode fichier par défaut est 'r'
signifiant ouvrir le fichier en mode lecture.

Remarque La version enveloppée n'acceptera que le format d'objet défini par
les codecs, c'est-à-dire les objets Unicode pour la plupart des codecs intégrés. La sortie dépend également du codec et sera généralement également Unicode. Remarque Les fichiers
sont toujours ouverts en mode binaire, même si aucun mode binaire n'a été spécifié. Ceci est fait pour éviter la perte de données due aux encodages utilisant des valeurs
8 bits. Cela signifie qu'aucune conversion automatique de 'n' n'est effectuée
en lecture et en écriture. encoding spécifie l'encodage qui doit être
utilisé pour le fichier.
des erreurs peuvent être données pour définir la gestion des erreurs. Sa valeur par défaut est
'strict', ce qui provoque la génération d'une ValueError en cas d'erreur d'encodage
.
la mise en mémoire tampon a la même signification que pour la fonction open() intégrée. Il
par défaut est la ligne tamponnée.

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

Essayez d'ajouter # -*- coding: utf-8 -*-

au début du fichier
大家讲道理

Ajoutez #coding:utf-8 au début du fichier

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal