Ali*_*Ali 5 utf-8 flask python-3.x
我一直在做烧瓶和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)
Run Code Online (Sandbox Code Playgroud)
我尝试过编码,但它不起作用.我在调试模式下遇到此错误:
AttributeError:'dict'对象没有属性'encode'
我怎么解决这个问题?
Rob*_*obᵩ 16
你是对的,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)
Run Code Online (Sandbox Code Playgroud)
# 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)))
Run Code Online (Sandbox Code Playgroud)
如您所见,http客户端获取JSON,对其进行解码,并检查"Birgün"中的"ü".
结果应该清楚地表明,ü在端到端的旅行中幸存下来,从Python3字符串,到JSON和HTTP,再回到Python3字符串.
ü: 1 fc LATIN SMALL LETTER U WITH DIAERESIS
Run Code Online (Sandbox Code Playgroud)
编辑:说完所有这些,有一个配置选项,将强制jsonify()表现为你希望:
app.config['JSON_AS_ASCII'] = False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6418 次 |
| 最近记录: |