본문 바로가기

카테고리 없음

[python] 한글이 깨져요

 

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") 사용

한글 깨짐 문제를 사전에 방지하려면, 항상 인코딩 방식을 명확하게 설정하는 습관을 들이는 것이 중요하다. 이렇게 하면 어떤 플랫폼에서도 한글이 정확하게 출력되는 안정적인 코드를 작성할 수 있다.