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, '직업': '개발자'}