我遇到了与Flask-Restful API服务器的ajax请求中的unicode相关的奇怪问题。这个问题只出现在一台机器上,而不是另一台。Flask-Restful API和JSON问题中的Unicode
我有一个安静的课。您可能会注意到字符字段被设置为unicode。
class PostListApi(Resource):
def __init__(self):
self.reqparse = reqparse.RequestParser()
self.reqparse.add_argument('body', type = unicode, required = True, help = 'No description provided', location = 'json')
self.reqparse.add_argument('longitude', type = float, required = False, help = 'Unknown address', location = 'json')
self.reqparse.add_argument('latitude', type = float, required = False, help = 'Unknown address', location = 'json')
self.reqparse.add_argument('address', type = unicode, required = True, help = 'No address specified', location = 'json')
self.reqparse.add_argument('scheduled', type = str, required = True, help = 'Not scheduled correctly', location = 'json')
super(PostListApi, self).__init__()
我的问题是,当我在身体发送带有拉丁字符一个Ajax请求,服务器以400错误进行回复。
Request URL:
Request Method:POST
Status Code:400 BAD REQUEST
Request Headersview source
Accept:undefined
Accept-Encoding:gzip,deflate,sdch
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Content-Length:159
**Content-Type:application/json; charset=UTF-8**
Proxy-Authorization:Basic a3lyeWxvLnlhdHNlbmtvOnBhc3N3b3JkMTIzNDU2
Proxy-Connection:keep-alive
User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
X-Requested-With:XMLHttpRequest
Request Payloadview parsed
{"body":"this is a test","address":"141 Rue Saint-Martin, 75003 Paris, France","longitude":2.351530499999967,"latitude":48.8614575,"scheduled":"20131017 1000"}
但是,当数据是cyrilic字母表服务器正确地管理请求。
Request URL:
Request Method:POST
Status Code:500 INTERNAL SERVER ERROR
Request Headersview source
Accept:undefined
Accept-Encoding:gzip,deflate,sdch
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Content-Length:208
**Content-Type:application/json; charset=UTF-8**
Cookie:
Proxy-Authorization:Basic a3lyeWxvLnlhdHNlbmtvOnBhc3N3b3JkMTIzNDU2
Proxy-Connection:keep-alive
User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
X-Requested-With:XMLHttpRequest
Request Payloadview source
{body:Йн незл ножтрюд оффÑндйт вÑш,…}
address: "Йн незл ножтрюд оффÑндйт вÑш"
body: "Йн незл ножтрюд оффÑндйт вÑш"
latitude: 48.8614575
longitude: 2.351530499999967
scheduled: "20131017 1000"
Response Headersview source
Connection:Keep-Alive
Content-Length:51
Content-Type:application/json
Date:Thu, 17 Oct 2013 08:03:41 GMT
Proxy-Connection:Keep-Alive
Server:WSGIServer/0.1 Python/2.7.5
请求生成与
你有没有遇到过类似的问题的jQuery AJAX方法呢?这怎么解决?我想在发送到服务器之前,拉丁字符也必须编码为unicode。我如何强制jquery将所有内容编码为unicode?
在此先感谢!
问题“当数据在cyrilic字母表服务器正常管理的要求。”根据你发布的第三条代码,当你用cyryllic发送东西时,服务器会回应500个代码 - 内部服务器错误,所以这也不好。那个PostListApi类是你所有的服务器吗?一些路线和视图功能如何? –
我不确定要理解你的问题。如果文本是** in cyrilic,则服务器不会响应500个代码。拉丁文中出现400错误(找不到参数)(第一个请求示例)。 – ryzhiy
@ryzhiy:响应包含''状态码:500内部服务器错误“'。你怎么得到的?你如何生成输出,你能显示'repr()'吗? – jfs