[Python] 한글 데이터(객체)를 JSON 파일로 저장하기

구콩·2022년 5월 18일
0

💔 Problem

1) 문제 상황 : json 파일의 한글 깨짐

  • api 요청을 해서 응답으로 받은 객체를 .json 파일로 저장했더니, 한글이 깨져서 저장되었다.

  • 저장할 데이터가 작은 상태에서는 한글이 잘 저장되다, 저장할 데이터가 커지는 순간 한글이 깨졌다.

2) CODE


import requests
import json

...

params = {
    'api_key' : api_key,
}

# response 객체를 json 객체(dict 형태)로 바꿔주기
response = requests.get(base_url, params=params)
data = response.json()

# data.json 파일에 data 저장하기
with open('./data.json', 'w') as f:
    json.dump(data, f, indent=4)

💘 Solution

json 파일로 저장하는 코드를 수정


# data.json 파일에 data 저장하기

with open('./data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)
  • open() 함수 안에 encoding='utf-8'을 인자로 넣어 준다.

    • 파일을 encode/decode할 때, 사용하는 text encoding의 이름을 문자열로 넣어준다.

    • 한글의 경우 encoding='utf-8'

    • encoding의 기본값은 platform에 의존한다.

    🔎 encoding/decoding: 문자열(객체)을 byte sequence(컴퓨터가 사용할 수 있는 형태)로 직렬화(serialize)하는 것이 encoding이고, byte sequence에서 문자열(객체)을 다시 만드는 것을 decoding이라고 한다.

  • json.dump() 함수 안에 ensure_ascii=False를 인자로 넣어 준다.

    • ensure_ascii는 기본값이 True로, 모든 비 ASCII 문자가 escaped(코드 형태) 되도록 한다.
    • 한글은 비 ASCII 문자이다.
    • ensure_ascii=False로 설정하면 문자들이 있는 그대로(한글 상태로) 파일에 저장된다.

📑 참조

0개의 댓글