Seongwon Lim

[Python] json.dump() 한글 깨짐 현상 해결하기 본문

Python

[Python] json.dump() 한글 깨짐 현상 해결하기

limsw 2022. 5. 16. 02:08
반응형

서론

파이썬으로 json파일에 데이터를 저장할 때, 한글 깨짐 현상이 발생하는 경우가 있다.

특히, 쓰기 메서드인 json.dump() 메서드를 사용할 때 해당 현상이 빈번히 일어난다.

 

이번 글에서는 해당 오류를 해결하는 방법을 간단하게 알아보고자 한다.

예제 코드

import json

data = {
    "name": "홍길동",
    "nation": "Korea",
    "age": 25,
    "hobby": ["코딩", "축구", "영화보기"]
}

with open("./test.json", 'w', encoding='utf-8') as f:
    json.dump(data, f, indent=4)

위 코드는 test.json 파일에 data 라는 변수를 저장하는 코드이다.

실제 코드를 돌려보면 결과는 다음과 같다.

{
    "name": "\ud64d\uae38\ub3d9",
    "nation": "Korea",
    "age": 25,
    "hobby": [
        "\ucf54\ub529",
        "\ucd95\uad6c",
        "\uc601\ud654\ubcf4\uae30"
    ]
}

영어나 숫자의 경우는 제대로 나오지만 한글의 경우 유니코드 표현으로 저장된 것을 확인할 수 있다.

이처럼 open() 인자로 encoding='utf-8' 옵션을 주어도 한글 인코딩이 제대로 되지 않는 경우가 발생한다.

해결 방법

해결 방법은 아주 간단하다. dump() 메서드에 인자로 아래 옵션을 추가하면 된다.

ensure_ascii=False

 

해당 옵션을 추가한 코드는 다음과 같다.

with open("./test.json", 'w', encoding='utf-8') as f:
    json.dump(data, f, indent=4, ensure_ascii=False)

그리고 다시 결과를 확인해보면

{
    "name": "홍길동",
    "nation": "Korea",
    "age": 25,
    "hobby": [
        "코딩",
        "축구",
        "영화보기"
    ]
}

한글이 깨지지 않고 우리가 작성한 것과 똑같은 데이터가 저장된 것을 확인할 수 있다.

Comments