我一直在使用 Flasks 和 jsonify 进行实验。有用。但不支持 utf-8 字符(土耳其字符)。我正在使用字典。
if api_key in key_list:
quotes = {
'ataturk':
['Hayatta En Hakiki Mursit Ilimdir Fendir',
'Birgün benim naciz bedenim'],
'mahatma gandhi':
['Happiness is when what you think, what you'
'say,and what you do are in harmony.']
}
get_quote = quotes[karakter(author.lower(), harfler)]
quote = {
'quotes': random.choice(get_quote),
}
return jsonify(quote)
我尝试过编码但它不起作用。我在调试模式下收到此错误:
AttributeError:“dict”对象没有属性“encode”
我怎么解决这个问题?
你是对的,jsonify不支持UTF-8字符。然而,它确实很好地支持 Unicode 字符。
考虑这两个程序:
# http server
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def root():
return jsonify({'quote':'Birgün'})
if __name__=='__main__':
app.run(debug=True)
# http client
import requests
import unicodedata
r = requests.get('http://localhost:5000/')
j = r.json()
u = j['quote'][4]
print("%s: %d %x %s\n"%(u, len(u), ord(u), unicodedata.name(u)))
正如您所看到的,http 客户端获取 JSON,对其进行解码,并检查“Birgün”中的“ü”。
结果应该清楚地表明,ü 在从 Python3 字符串到 JSON 和 HTTP,再回到 Python3 字符串的端到端旅程中幸存下来。
ü: 1 fc LATIN SMALL LETTER U WITH DIAERESIS
编辑:说了这么多,有一个配置选项 http://flask.pocoo.org/docs/0.10/config/这将迫使jsonify()
按照您希望的方式行事:
app.config['JSON_AS_ASCII'] = False
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)