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

一个很简单的小爬虫程序

    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

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

黄舟
黄舟

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

모든 응답(3)
Ty80
  1. 你需要知道 콘텐츠 的编码方式,并考虑是否要转换

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

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

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

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

으아악
刘奇

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

을 추가해 보세요.
大家讲道理

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿