Python - 파일 입출력 관련 에러 , 'cp949' codec can't decode byte 0x84 in position 10: illegal multibyte sequence

반응형

오류 발생

파이썬에서 데이터를 파일로 처리하는 과정에서 다음과 같은 오류가 발생하였다.

오류 발생 예시 이미지
오류 발생 예시 이미지

file read/write error :
'cp949' codec can't decode byte 0x84 in position 10: illegal multibyte sequence

 

소스코드는 다음과 같다.

try :
    with open(filepath, 'r') as f:
        read_data = f.read()
        return read_data
except Exception as e :
    return "file read/write error : " + str(e)

 

즉, 파일을 읽어오는 과정에서 오류가 발생했다는 것이다.

 

원인 파악

오류가 무엇을 의미하는지는 이전에 MySQL때 같은 경험이 있어서 대략 짐작은 간다.

오류 원인은 한글이 포함되었기 때문이다.

한글이 포함된 파일은 대개 cp949 형태의 인코딩 형식으로 저장된다.

하지만 이를 파이썬에서 파일을 읽어올 때,

파일의 인코딩 형식을 맞춰주지 않으면 읽을 수 없기 때문에 위와 같은 오류가 발생하는 것이다.

 

해결 방법

방법은 너무나도 간단하다.

파일을 읽고 쓰는 로직에서 인코딩 타입만 지정해주면 된다.

with open(filepath, 'r', encoding='utf-8') as f:
	# code

 

encoding = 'utf-8'은 한글이 지원되는 인코딩 형식을 사용하겠다는 말과 비슷하다.

 

내가 오류가 난 코드를 기준으로 수정을 하면 다음과 같다.

try :
    with open(filepath, 'r', encoding='utf-8') as f:
        read_data = f.read()
        return read_data
except Exception as e :
    return "file read/write error : " + str(e)

 

반응형