⊙requests 라이브러리에서의 한글 깨짐 현상
한글의 경우 requests, 라이브러리를 통해 전달할 때, 특별히 주의해야 한다. 아래 예시처럼 json이 자동으로 ascii로 변환하기 때문에 입력이 깨져서 전달이 되기 때문이다.
import json
post_data = {"item": "한글 인코딩"}
with open('sample.json', 'w') as f:
json.dump(post_data, f)
# sample.json 파일 열어보면 아래와 같이 저장되어 있음
{"item": "\ud55c\uae00 \uc778\ucf54\ub529"}
한글 데이터를 json.dump()
로 저장하고 해당 파일을 열면 한글이 ascii 인코딩으로 저장이 된다. requests를 통해 데이터를 전달할 때도 json.dump()
로 전달하기 때문에 동일한 현상이 일어난다.
⊙requests 라이브러리에서의 한글 깨짐 해결
한글을 utf-8로 인코딩하여 전달하기 위해서는 다음과 같이 json.dumps()
를 사용하고 ensure_ascii=False
를 하고 .encode('utf-8')
를 사용하여 전달할 데이터를 처리해야 한다.
import json
post_data = {"item": "한글 인코딩"}
json.dumps(post_data, ensure_ascii=False).encode('utf8')
>>>> b'{"item": "\xed\x95\x9c\xea\xb8\x80 \xec\x9d\xb8\xec\xbd\x94\xeb\x94\xa9"}'
*json.dump(), json.dumps() 차이
json.dump()
: serialized된 python 객채들을 파일에 저장할 때 사용json.dumps()
: python 객체들을 json 포맷으로 인코딩'만'할 때 사용
728x90
'python 메모' 카테고리의 다른 글
[sklearn] classification_report 결과 파일로 저장하기 (0) | 2021.09.02 |
---|---|
[python] eval() 내장함수 (0) | 2021.08.29 |
[pandas] apply + custom function을 사용한 다중 입력 및 출력 (0) | 2021.06.10 |
[python] datetime 사용하기 (0) | 2021.06.06 |
[python] First-Class Function과 Closure, Decorator (0) | 2021.06.01 |