2013-08-18 2 views
1

메모장에 ANSI 인코딩이 포함 된 텍스트 파일을 저장했습니다.텍스트 파일에서 간단한 목록을 인쇄하려고 할 때 '출력이 utf-8이 아니'오류가 발생합니다.

아래 스크립트를 사용하여 목록을 표시하려고하면 목록의 첫 번째 항목이 표시되고 "utf-8 출력이 아닙니다"라는 오류 메시지가 나타납니다.

with open("animals.txt") as f: 
    content = f.readlines() 

for animal in content: 
    print animal 

이 문제를 해결할 수있는 방법이 있습니까?

+0

뺨에 응답 혀 - 파이썬 3을 사용하십시오! – rlms

+0

실제로 무슨 일이 일어나는지 보려면 'animals.txt'가 필요합니다. –

+0

파이썬 2.7을 사용하고 있습니다. 파이썬 3으로 변경하면 문제가 해결 될까요? – bolshevik

답변

3

바이트 문자열을 읽은 다음 해당 원시 바이트를 출력으로 직접 전송하고 터미널 또는 IDE 콘솔에서 바이트 스트림에 UTF-8로 불법적 인 시퀀스가 ​​포함되어 있다고 불평하고 있습니다.

사용 codecs.open() 유니 코드 데이터로 파일을 읽을 다음, 파이썬은 자동으로 터미널 코덱에 유니 코드 값을 인코딩하자

import codecs 

with codecs.open("animals.txt", 'r', encoding='mbcs') as f: 
    content = f.readlines() 

for animal in content: 
    print animal 

직접 파일을 통해 루프 :

import codecs 

with codecs.open("animals.txt", 'r', encoding='mbcs') as f: 
    for animal in f: 
     print animal 

mbcs 인을 Windows ANSI 코드 페이지의 파이썬 이름 :

바람 ows only : ANSI 코드 페이지 (CP_ACP)에 따라 피연산자를 인코딩하십시오.

아마도 다른 Windows 코드 페이지를 의미했을 것입니다. 이 경우 Microsoft의 서유럽 Latin-1 변형에 대해 cp1250 또는 cp1252과 같은 올바른 cp 코덱을 선택하십시오.

관련 문제