Python 3.x “无法解码”;devanagari文本“;作为URL参数传递

Python 3.x “无法解码”;devanagari文本“;作为URL参数传递,python-3.x,flask,character-encoding,flask-restful,urldecode,Python 3.x,Flask,Character Encoding,Flask Restful,Urldecode,我的Python Flask应用程序无法解码devanagari文本,例如:सिंगापूर" 我从我的邮递员那里作为urlparam传递。如果我发送英文文本,它会处理得很好 我的邮递员查询: 得到िंगापूर 从烧瓶导入烧瓶 来自restful导入资源Api 类devnagritem(资源): def get(自我,文本输入): 打印(“解析的字符串为:”,textInput) 返回{'text':textInput} api.add_资源(devnagritem,“/getWord/”)

我的Python Flask应用程序无法解码devanagari文本,例如:सिंगापूर" 我从我的邮递员那里作为urlparam传递。如果我发送英文文本,它会处理得很好

我的邮递员查询: 得到िंगापूर

从烧瓶导入烧瓶
来自restful导入资源Api
类devnagritem(资源):
def get(自我,文本输入):
打印(“解析的字符串为:”,textInput)
返回{'text':textInput}
api.add_资源(devnagritem,“/getWord/”)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(debug=True)
我在控制台上得到的输出是

{
    "text": "\u00818"
}
而不是

{
    "text": "सिंगापूर"
}

您需要防止响应强制ASCII:
app.config['JSON\u AS\u ASCII']=False

在你的例子中:


从烧瓶进口jsonify,烧瓶
来自restful导入资源Api
app=烧瓶(名称)
app.config['JSON_AS_ASCII']=False
api=api(应用程序)
类devnagritem(资源):
def get(自我,文本输入):
打印(“解析的字符串为:”,textInput)
返回jsonify(text=textInput)
api.add_资源(devnagritem,“/getWord/”)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(debug=True)

但是,这并不重要,如果它被读入Python或JavaScript,它将以相同的方式被解释。

这对我运行Flask RESTful==0.3.6和Flask==1.0.2很有效。也许你机器上的默认编码不是utf8?如果你打印出
sys.getdefaultencoding()
在运行应用程序之前?我也在运行Flask RESTful==0.3.7和Flask==1.0.2。它在运行该命令时打印utf-8。但它对我不起作用。如果你在浏览器中访问该URL会发生什么?可能是邮递员的问题。看起来他们过去也有类似的问题。好的,当我在浏览器中运行时,它返回了这些值{”文本“:\u0938\u093f\u0902\u0917\u093e\u092a\u0942\u0930”}。这些符号中的每一个,例如“\u0938”都是Devanagari标志符号的Unicode转义序列。如何获得原文?”सिंगापूर" 直接?这应该很好,不是吗?如果你把它读入Python,它是等效的,或者你需要它来实际渲染响应中的字符?