python을 사용하다보면, 문자열로 고생하는 경우들이 있다.
주로 UTF-8과 cp949 , 하나는 리눅스에서 사용하는 한글이고, 하나는 windows에서 사용하는 한글 포맷인데,
예를 들면 아래와 같이 사용할 경우
with open('filename.txt','r', encoding='utf-8') as f:
_s = f.read()
위와 같이 사용하는 경우 실제 파일이 cp949인 형태 (또는 반대) 의 경우 Fail을 내면서
죽어버리는 경우가 있다.
그래서 이때 사용하기 위한 solution이 chardet 패키지 이다.
이것은 미리 문자열 셋을 판단해주는 패키지 이다.
위의 코드를 아래와 같이 할 경우, utf-8이던 cp949이던 상관없이 read가 가능하게 된다.
import chardet
rawdata = open(file, "r").read()
result = chardet.detect(rawdata)
charenc = result['encoding']
#with open('filename.txt','r', encoding='utf-8') as f:
with open('filename.txt','r', encoding=charend) as f:
_s = f.read()