[Python] json.dump() 한글 깨지지 않도록 저장
July 09, 2024
json.dump()
으로 딕셔너리를 JSON 파일로 저장하고 파일을 열면, 한글이 이상하게 보입니다. 에디터에서 파일을 열 때도 한글로 보이도록 저장하는 방법에 대해서 알아보겠습니다.
1. 잘못된 포맷으로 한글이 저장되는 경우
아래와 같이 딕셔너리를 JSON 형식의 파일로 변환하여 저장할 수 있습니다. 하지만 저장된 파일을 보면 한글 그대로 표현되지 않고 이상한 문자들로 보입니다.
json.dump(dict, file)
: dict를 JSON으로 변환하여 file에 저장
import json
data = {
"이름": "JS",
"나이": 30,
"직업": "개발자"
}
# JSON 파일에 쓰기
with open("data.json", "w", encoding="utf-8") as json_file:
json.dump(data, json_file, indent="\t")
저장된 data.json
파일을 열어보면 아래와 같이 보입니다.
- 위의 코드는 한글을 유니코드가 아닌 아스키로 저장되어 이렇게 보임
- 유니코드 형식으로 저장해야 에디터에서 한글로 보임
{
"\uc774\ub984": "JS",
"\ub098\uc774": 30,
"\uc9c1\uc5c5": "\uac1c\ubc1c\uc790"
}
2. 한글을 유니코드로 저장
json.dump()
로 JSON 파일을 저장할 때 인자로 ensure_ascii
값을 false로 전달하면, 한글이 유니코드 문자 그대로 저장됩니다.
이 때문에 에디터로 저장된 파일을 열면 한글로 보이게 됩니다.
import json
data = {
"이름": "JS",
"나이": 30,
"직업": "개발자"
}
# JSON 파일에 쓰기
with open("data.json", "w", encoding="utf-8") as json_file:
json.dump(data, json_file, indent="\t", ensure_ascii=False)
저장된 data.json
파일을 열어보면 아래와 같이 한글로 보입니다.
{
"이름": "JS",
"나이": 30,
"직업": "개발자"
}
3. 유니코드로 저장된 JSON 파일 읽기
유니코드로 저장된 JSON 파일은 아래와 같이 utf-8
인코딩으로 읽어 딕셔너리로 변환할 수 있습니다.
encoding="utf-8"
: utf-8 인코딩으로 파일 읽기
import json
# JSON 파일 읽기
with open("data.json", "r", encoding="utf-8") as json_file:
data = json.load(json_file)
print(data)
Output:
{'이름': 'JS', '나이': 30, '직업': '개발자'}