api 요청을 해서 응답으로 받은 객체를 .json
파일로 저장했더니, 한글이 깨져서 저장되었다.
저장할 데이터가 작은 상태에서는 한글이 잘 저장되다, 저장할 데이터가 커지는 순간 한글이 깨졌다.
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)
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
로 설정하면 문자들이 있는 그대로(한글 상태로) 파일에 저장된다.