찾다

 >  Q&A  >  본문

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

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

黄舟黄舟2862일 전680

모든 응답(3)나는 대답할 것이다

  • PHP中文网

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

    1. 你需要知道 콘텐츠 的编码方式,并考虑是否要转换

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

    codecs.open(파일 이름, 모드[, 인코딩[, 오류[, 버퍼링]]])

    주어진 모드를 사용하여 인코딩된 파일을 열고
    투명한 인코딩/디코딩을 제공하는 래핑된 버전을 반환합니다. 기본 파일 모드는 'r'
    읽기 모드로 파일을 여는 것을 의미합니다.

    참고 래핑된 버전은 코덱에서 정의한 개체 형식(즉, 대부분의 내장 코덱에 대한 유니코드 개체)만 허용합니다.
    출력은
    코덱에 따라 다르며 일반적으로 유니코드이기도 합니다. 참고 파일
    은 바이너리 모드가 지정되지 않은 경우에도 항상 바이너리 모드로 열립니다. 이는
    8비트 값을 사용하는 인코딩으로 인한 데이터 손실을 방지하기 위해 수행됩니다. 이는 읽기 및 쓰기 시 'n'의 자동 변환이
    수행되지 않음을 의미합니다. 인코딩은 파일에 사용될
    인코딩을 지정합니다.
    errors는 오류 처리를 정의하기 위해 제공될 수 있습니다. 기본값은
    'strict'로 설정되어 인코딩
    오류가 발생할 경우 ValueError가 발생합니다.
    버퍼링은 내장 open() 함수와 동일한 의미를 갖습니다.
    기본값은 라인 버퍼링입니다.

    으아악

    회신하다
    0
  • 怪我咯

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

    파일 시작 부분에 # -*- coding: utf-8 -*-

    을 추가해 보세요.

    회신하다
    0
  • 大家讲道理

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

    파일 시작 부분에 #coding:utf-8 추가

    회신하다
    0
  • 취소회신하다