我使用Flask来构建restapi,但是当我用汉字传递查询参数时,我得到的是乱码字符,而不是中文
from flask import Blueprint
from flask_restful import Resource, Api
class Keyword(Resource):
def post(self, keyword):
return {"keyword": "keyword"}
keyword_api = Blueprint('resourses.keyword', __name__)
api = Api(keyword_api)
api.add_resource(
Keyword,
'/keyword/<string:keyword>',
endpoint='keyword'
)
^{pr2}$
我期望{“keyword”:“價錢”}的输出,但实际输出是{“keyword”:“è²´\u0081\u008e”}
更新: 现在我把这个添加到代码中,它正确地返回{“keyword”:“價錢”}
keyword = keyword.encode('iso-8859-1').decode('utf8')
代码似乎运行正常。我冒昧地修改了一下,使之成为一个有效的例子。需要注意的是b'{“keyword”:“\u50f9\u9322”}'对象类型是由b前缀表示的字节。如果将此数据从json序列化为python本机字符串,您将发现它是有效的價錢编码的。在
类型是}。当您用
'utf-8'
,但由'iSO-8859-1'
解码,因此存在乱码字符。Bytes
数据被'iso-8859-1'
解码成{'iso-8859-1'
对它进行编码时,它又变回了Bytes
数据,然后用utf-8
对其进行解码,输出是正确的。它是不同编码/解码类型之间的变化。如果找到相应的参数,可以将解码类型设置为utf-8
。在相关问题 更多 >
编程相关推荐