2014-10-06 5 views
-1

파이썬 3에서 UTF-8 인코딩 주제를 많이 읽었지만 여전히 작동하지 않으며 실수를 찾을 수 없습니다.파이썬 3 UTF-8 인코딩이 실제로 작동하지 않습니다.

내 코드 내 test.txt 파일이

ö 

처럼 보이는이

def main(): 

    with open("test.txt", "rU", encoding='utf-8') as test_file: 
     text = test_file.read() 
    print(str(len(text))) 


if __name__ == "__main__": 

    main() 

처럼 보인다 그리고 나는 다음과 같은 오류 얻을 :

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf6 in position 0: invalid start byte 
+4

파일이 UTF-8로 인코딩되지 않았습니다. –

+0

테스트 파일. 나는 Python3에서 그것을 읽을 수있는 programm를 작성해야한다. 그리고 다시 써라. UTF-8이어야합니다. – GVVMultigamingClan

+0

두 가지가 잘못되었습니다. 파일이 UTF-8이 아니거나 그렇지 않은 경우 파일에'ä '이외의 것이 있습니다. –

답변

7

파일이 UTF-8되지 않습니다 인코딩 됨. 어떤 인코딩이 ä에 대해 F6을 사용하는지 확실하지 않습니다. 당신은 UTF-8 대신으로 해당 파일을 저장해야합니다

>>> b'\xf6'.decode('utf8') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf6 in position 0: invalid start byte 
>>> b'\xf6'.decode('latin1') 
'ö' 

, 해당 파일을 만드는 데 사용 어떤 도구 : 그 코드 포인트 라틴 1 ö 및 CP-1252에 대한 인코딩입니다.

open('text').read()이 작동하면 기본 시스템 인코딩을 사용하여 파일을 디코딩 할 수 있습니다. 참조 open() function documentation : 올바른 인코딩을 사용하여 파일을 읽고 있다고 말할 수 없습니다

encoding is the name of the encoding used to decode or encode the file. This should only be used in text mode. The default encoding is platform dependent (whatever locale.getpreferredencoding() returns), but any encoding supported by Python can be used.

; 이는 단지 기본 인코딩이 깨지지 않았 음을 의미합니다 (문자 매핑이없는 바이트가 발생했습니다). 이러한 바이트를 여전히 잘못된 문자에 매핑 할 수 있습니다.

나는 유니 코드와 파이썬에 최대 읽기 당신을 촉구 :

네드 BATCHELDER에 의해 0
관련 문제