sourcecode

utf-8의 python jsonify 사전

copyscript 2023. 2. 23. 22:59
반응형

utf-8의 python jsonify 사전

json 데이터를 utf-8로 가져오고 싶다.

리스트가 있습니다.my_list = []

그리고 많은 사람들이 목록에 다음과 같이 유니코드 값을 추가합니다.

my_list.append(u'ტესტ')

return jsonify(result=my_list)

그리고 그것은

{
"result": [
"\u10e2\u10d4\u10e1\u10e2",
"\u10e2\u10dd\u10db\u10d0\u10e8\u10d5\u10d8\u10da\u10d8"
]
}

UTF-8 지원을 추가하려면 다음 설정을 사용합니다.

app.config['JSON_AS_ASCII'] = False

대신 표준 라이브러리 모듈을 사용하여ensure_ascii키워드 파라미터는 부호화 시 False로 설정하거나 다음 명령을 사용하여 동일한 작업을 수행합니다.

>>> data = u'\u10e2\u10d4\u10e1\u10e2'
>>> import json
>>> json.dumps(data)
'"\\u10e2\\u10d4\\u10e1\\u10e2"'
>>> json.dumps(data, ensure_ascii=False)
u'"\u10e2\u10d4\u10e1\u10e2"'
>>> print json.dumps(data, ensure_ascii=False)
"ტესტ"
>>> json.dumps(data, ensure_ascii=False).encode('utf8')
'"\xe1\x83\xa2\xe1\x83\x94\xe1\x83\xa1\xe1\x83\xa2"'

UTF8에 명시적으로 결과를 부호화할 필요가 있는 것에 주의해 주세요.dumps()함수는 a를 반환합니다.unicode이 경우 오브젝트를 지정합니다.

이것을 디폴트로 할 수 있습니다(및jsonify()Flask 앱 구성에서 False로 설정합니다.

경고: ASCII가 아닌 신뢰할 수 없는 데이터를 JSON에 포함시키지 마십시오. 그런 다음 HTML 템플릿에 보간하거나 JSONP API에서 사용하면 구문 오류가 발생할 수 있습니다.이는 JSON이 Javascript의 엄밀한 서브셋이 아니기 때문에 ASCII 세이프 인코딩을 무효로 할 때 U+2028 및 U+2029 구분자는 다음 주소로 이동할 수 없기 때문입니다.\u2028그리고.\u2029시퀀스입니다.

여전히 플라스크의 json을 사용하고 utf-8 인코딩을 하고 싶다면 다음과 같은 작업을 수행할 수 있습니다.

from flask import json,Response
@app.route("/")
def hello():
    my_list = []
    my_list.append(u'ტესტ')
    data = { "result" : my_list}
    json_string = json.dumps(data,ensure_ascii = False)
    #creating a Response object to set the content type and the encoding
    response = Response(json_string,content_type="application/json; charset=utf-8" )
    return response

#이것이 도움이 되었으면 좋겠다

나의 경우 위의 용액이 충분하지 않았다.(GCP App Engine의 유연한 환경에서 플라스크를 실행한다.)나는 결국 다음과 같이 되었다.

json_str = json.dumps(myDict, ensure_ascii = False, indent=4, sort_keys=True)
encoding = chardet.detect(json_str)['encoding']
json_unicode = json_str.decode(encoding)
json_utf8 = json_unicode.encode('utf-8')
response = make_response(json_utf8)
response.headers['Content-Type'] = 'application/json; charset=utf-8'
response.headers['mimetype'] = 'application/json'
response.status_code = status

언급URL : https://stackoverflow.com/questions/14853694/python-jsonify-dictionary-in-utf-8

반응형