1. Python에서 한글 깨짐 문제 해결 방법
Python을 사용할 때 한글이 깨지는 문제는 자주 발생한다. 이는 주로 입출력 인코딩 설정 부족, 터미널 환경 문제, 파일 저장 방식 차이 등으로 인해 발생한다. 본 글에서는 다양한 상황에서 한글이 깨지는 원인을 분석하고, 그에 대한 해결 방법을 소개한다.
1️⃣ 터미널 출력 시 한글이 깨지는 경우
🔧 해결 방법
⬛ Python 파일 상단에 인코딩 명시
# -*- coding: utf-8 -*-
Python 3 이상에서는 기본 인코딩이 UTF-8이지만, 명시적으로 작성하는 것이 안전하다.
⬛ 터미널 환경 설정 확인
- Windows 환경위 명령어로 터미널 인코딩을 UTF-8로 설정할 수 있다.
- chcp 65001
- Linux/macOS 환경위 환경변수를 설정하면 한글 출력 문제가 해결된다.
- export LANG=ko_KR.UTF-8 export LC_ALL=ko_KR.UTF-8
2️⃣ 파일 입출력 시 한글이 깨지는 경우
🔧 해결 방법
with open("output.txt", "w", encoding="utf-8") as f:
f.write("한글이 잘 나오는지 확인한다.")
Windows 메모장에서 볼 때 한글이 깨진다면 "utf-8-sig" 인코딩을 사용하는 것이 좋다.
with open("output.txt", "w", encoding="utf-8-sig") as f:
f.write("메모장에서도 한글이 제대로 보인다.")
3️⃣ 로그 파일에 한글이 깨지는 경우
logging 모듈을 사용할 때도 encoding 옵션을 명시해야 한다.
import logging
logging.basicConfig(
filename="log.txt",
level=logging.INFO,
format="%(asctime)s - %(message)s",
encoding="utf-8"
)
logging.info("한글 로그를 기록한다.")
4️⃣ pandas 또는 CSV 저장 시 한글이 깨지는 경우
Excel에서 열 때 한글이 깨지는 경우 "utf-8-sig"를 사용하는 것이 일반적이다.
import pandas as pd
df = pd.DataFrame({'이름': ['홍길동', '김철수']})
# 일반 UTF-8 저장
df.to_csv("data.csv", index=False, encoding="utf-8")
# Excel에서 한글 깨짐 방지용
df.to_csv("data_excel.csv", index=False, encoding="utf-8-sig")
✅ 결론
한글 깨짐 문제는 대부분 인코딩을 명시하지 않아서 발생한다. 또한, 출력 환경과 파일 열기 프로그램 간의 인코딩 방식 차이도 문제의 원인이 된다. 아래는 상황별로 정리한 해결 방안이다.
상황 해결 방법
터미널 출력 | chcp 65001, export LANG=ko_KR.UTF-8 등 환경 설정 |
파일 쓰기 | open(..., encoding="utf-8") 또는 "utf-8-sig" 사용 |
로그 기록 | logging.basicConfig(..., encoding="utf-8") |
CSV 저장 | to_csv(..., encoding="utf-8-sig") 사용 |
한글 깨짐 문제를 사전에 방지하려면, 항상 인코딩 방식을 명확하게 설정하는 습관을 들이는 것이 중요하다. 이렇게 하면 어떤 플랫폼에서도 한글이 정확하게 출력되는 안정적인 코드를 작성할 수 있다.