Error Handling

python error 해결법: flask response 한글 깨짐 현상

고수트 2022. 3. 1. 20:39
반응형

python framework 중 하나인 flask 를 이용하여 값을 응답 하다보면 

한글인 경우 아래와 같이 깨져서 나타나는 경우가 있다.

{
  "sentence": "\uc548\ub155\ud558\uc138\uc694"
}

 

이경우는 flask 에서 사용하고 있는 인코딩이 utf8 이 아닌 ascii 라 발생한다.

해결법은 간단하게 아래와 같이 flask 를 호출한 부분에서 ascii 를 꺼주면 된다.

from flask import Flask
app = Flask(__name__)
# 아래 추가
app.config['JSON_AS_ASCII'] = False

 

그런데 flask 의 Response 모듈과 json.dump 를 사용하는 경우에는 위의 설정이 깨어지는 경우도 있다.

res = json.domps(result)
Response(res, content_type='application/json; charset=utf-8')

 

이와 같은 경우에는 json.dump 에서 ascii 인코딩을 False 후 encode 를 utf8 로 변환하여 response 를 넘겨주면 된다.

아래와 같다.

 res = json.dumps(res, ensure_ascii=False).encode('utf8')
 Response(res, content_type='application/json; charset=utf-8')

 

반응형