파이썬에서 파일을 저장할 때 인코딩 방식이 정해지면
다시 읽을때도 해당 방식으로 디코딩을 해야 정상적인 데이터를 읽을 수 있다.
나의 경우에는 보통 이런 문제는 windows <-> linux 환경에서 자주 겪었다.
매번 어떤 환경에서 어떤 방식을 썼는지 햇갈리니 일단 기록.
1. 인코딩 방식 확인하기
1.1 기본 시스템 인코딩 타입 확인하기
import sys
sys.stdin.encoding
# cp949
sys.stdout.encoding
# cp949
1.2 라이브러리를 이용하여 문자열 / 파일의 인코딩 타입 확인하기
# chardet 라이브러리를 이용
# pip install chardet
import chardet
# 문자열
str = "example text"
print(chardet.detect(str.encode))
# {'encoding': 'cp949', 'confidence': 0.99, 'language': ''}
# 파일
with open("./example_file.txt", 'r') as file:
line = file.readline()
print(chardet.detect(line.encode()))
# # {'encoding': 'cp949', 'confidence': 0.99, 'language': ''}
2. encoding= 파라미터로 인코딩 방식 지정하기
with open("./example_file.txt", 'r', encoding="cp949") as file:
line = file.readline()
3. (참고용) os에 따른 기본 인코딩 타입 (python 3.7 기준)
- windows : cp949
- linux : utf-8
파이썬 버전에 따른 인코딩 타입이 다른지는 모르겠다. (확인되면 수정하기)
euc-kr 도 종종 보이나 cp949가 euc-kr의 상위 버전이므로 가능하면 cp949를 사용하자.
'Programming > Python' 카테고리의 다른 글
python2.X 에서 opencv-python을 설치하자 (0) | 2021.01.19 |
---|---|
list에서 중복 내용을 제거하자 (0) | 2021.01.11 |
데이터와 인덱스를 알려주는 enumerate (0) | 2020.12.01 |
CondaVerificationError를 해결하자 (0) | 2020.10.28 |
폴더의 이름을 일괄 변경하자 (0) | 2020.05.27 |