파이썬에서 response를 보내는데, utf8이아닌, 유니코드 그대로 보내지고, 화면에 출력되는 문제가 발생했다. 정말 파이썬 하면서 encoding 문제는 진짜… 항상 마주할때마다 이렇게 해서 고쳐야지~라고 생각하고 고쳤을때 바로 안되면, 그냥 당황스럽기 짝이없음.
{
"code": 100,
"data": {
"\uc548\ub155": 2,
"\ud558\uc774\ub8e8": 2
},
"mesg": "success",
"method": "get",
"target": "/api/test",
"time": 0.001
}
아무래 utf8로 encoding을 해도 결과는 같음, postman에서 json으로 보면 아주 예쁘게 보여서 content-type을 appliction/json으로 보내면 되나 했더니 그것도 안되니, 이제 여기서부터 당황 스러움이 시작되었다.
아무튼 결론적으로 엄청나게 삽질을하고 삽질을 했다.
문제는 내가 response를 할때 dict의 형태로 생성해서 보내는게 가장 문제
flask에서 지원하는 make_response를 사용하면 문제는 쉽게 해결을 할 수 있다.
함수 내부에서 header에 text/html; charset=utf-8를 설정해주기 때문에 문제 없이 utf8로 응답이 보내진다.
이전에는 header없이 body만 전달했기 때문에 unicode그대로 화면에 출력을 했다.
flask의 make_response를 사용하기 위해서는 아래와 같이 사용한다.
{"code": 100, "target": "/api/test", "mesg": "success", "time": 0.0018, "data": {"안녕": 2}, "method": "get"}
[참고]
http://flask.pocoo.org/docs/0.12/api/#flask.Flask.response_class
http://flask.pocoo.org/docs/0.12/api/#flask.Response
'Programming > Python' 카테고리의 다른 글
파이썬 디렉토리 생성 코드 (0) | 2017.11.02 |
---|---|
파이썬 데이터 읽기 (pandas) (0) | 2017.11.02 |
[Python] Flask logging 하는 방법 (0) | 2017.02.07 |
[Python] Virtualenv 설치 및 dependencies 관리하기 (0) | 2017.02.07 |
[Python] matpltlib import 에서 발생한 에러 (0) | 2017.02.07 |