반응형
파이썬으로 CSV를 다루다 보면 한글 깨짐 문제를 자주 만나게 된다.
특히 엑셀에서 열었을 때 글자가 이상하게 보이면 encoding 문제일 가능성이 크다.
이 글에서는 파이썬 한글 CSV 깨짐 해결 방법을 가장 기본적인 형태로 정리해본다.
- 왜 한글이 깨질까
파일 자체는 정상인데 읽는 프로그램이 다른 문자 인코딩으로 해석하면 한글이 깨질 수 있다.
파이썬에서는 주로 utf-8을 많이 쓴다.
하지만 윈도우 환경이나 오래된 프로그램은 cp949를 쓰는 경우도 많다.
엑셀에서는 utf-8-sig가 더 안전한 경우가 많다.
- CSV 저장할 때 가장 많이 쓰는 방식
import csv
rows = [
["이름", "메모"],
["민수", "테스트 데이터"],
["지은", "한글 저장 확인"]
]
with open("korean.csv", "w", newline="", encoding="utf-8-sig") as file:
writer = csv.writer(file)
writer.writerows(rows)
- 이미 저장된 파일을 읽을 때
상대가 어떤 인코딩으로 저장했는지 모르면 하나씩 시도해봐야 한다.
import csv
with open("korean.csv", "r", newline="", encoding="utf-8-sig") as file:
reader = csv.reader(file)
for row in reader:
print(row)
만약 깨진다면 cp949로 다시 시도할 수 있다.
import csv
with open("korean.csv", "r", newline="", encoding="cp949") as file:
reader = csv.reader(file)
for row in reader:
print(row)
- utf-8, utf-8-sig, cp949 차이
- utf-8은 가장 일반적인 인코딩이다.
- utf-8-sig는 엑셀에서 한글 깨짐을 줄일 때 자주 쓴다.
- cp949는 윈도우 환경에서 오래전부터 많이 쓰인 한글 인코딩이다.
- 실무에서는 어떻게 처리하면 되나
- 내가 새로 만드는 CSV는 utf-8-sig로 저장한다.
- 외부에서 받은 CSV는 utf-8-sig와 cp949를 순서대로 확인한다.
- 엑셀로 열어봐야 한다면 utf-8-sig를 우선 고려한다.
- 정리하며
파이썬 한글 CSV 깨짐 해결의 핵심은 인코딩이다.
새 파일을 만들 때는 utf-8-sig를 쓰고 외부 파일은 utf-8-sig와 cp949를 먼저 의심하면 된다.
반응형
'Phython > Python 파일처리' 카테고리의 다른 글
| [파이썬 파일처리] 파이썬 JSON 파일 읽고 저장하기, 딕셔너리 파일로 저장하는 방법 (0) | 2026.03.30 |
|---|---|
| [파이썬 파일처리] 파이썬 TXT 파일 읽기와 쓰기, 메모장 파일 다루기 (0) | 2026.03.27 |
| [파이썬 파일처리] 파이썬 CSV 파일 읽기, 한 줄씩 데이터 가져오는 방법 (0) | 2026.03.25 |
| [파이썬 파일처리] 파이썬 CSV 파일 만들기, 초보자도 바로 되는 기본 예제 (0) | 2026.03.24 |
