Programming/Python

os에 따른 기본 파일 인코딩 형식

매직블럭 2020. 12. 14. 14:57

 

파이썬에서 파일을 저장할 때 인코딩 방식이 정해지면

다시 읽을때도 해당 방식으로 디코딩을 해야 정상적인 데이터를 읽을 수 있다.

 

나의 경우에는 보통 이런 문제는 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를 사용하자.