我通过parse.com(基于nodejs构建)访问amazons MWS-Api,并且他们的flatfile-reports(getreport端点)存在问题。所有特殊字符(ä,ö,ü)都被删除。根据MWS-Support,他们正在使用CP1252-Encoding。这是请求代码。
// Parse.Cloud.httpRequest is parses version of the nodejs http-module
Parse.Cloud.httpRequest({
url: "https://mws.amazonservices.de/?",
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=utf-8",
"Host": "mws.amazonservices.de",
"x-amazon-user-agent": "MyUserAgent(Language=Javascript)",
"Accept-Charset": "CP1252"
},
body: queryString
success: function(resp){
response.success(resp)
}
},
error: function(err){
response.error(err)
}
我收到的响应标题如下:
{
"Connection": "close",
"Content-Length": "395828",
"Content-MD5": "Xw8KYGqESc7u4TTzgcbT/g==",
"Content-Type": "text",
"Date": "Thu, 13 Aug 2015 10:21:00 GMT",
"Server": "AmazonMWS",
"Vary": "Accept-Encoding,User-Agent",
"x-amz-request-id": "xxxxx",
"x-mws-quota-max": "60.0",
"x-mws-quota-remaining": "58.0",
"x-mws-quota-resetsOn": "2015-08-13T10:38:00.000Z",
"x-mws-request-id": "xxxxx",
"x-mws-response-context": "C0ywPcTe0K9qESsoz4OzZX9oRJMDuYR9vvk5MfN3KKOGEnyWgSZlOQDixINemnwLVZl0DjXEdrY=",
"x-mws-timestamp": "2015-08-13T10:21:01.186Z"
}
为了澄清,特殊字符没有乱码(没有“ ”或类似的东西)。 “Für”被简单地称为“Fr”。或者,我对amazons scratchpad(https://mws.amazonservices.de/scratchpad/index.html)也有同样的问题,根据MWS-Support,它应该正确显示特殊字符。 感谢您提前提供任何帮助。
edit1:此外,我的同事在完全不相关的项目(不同的数据源和所有内容)中与解析有着非常相似的问题。在python中进行了一些实验后,我非常确定他的数据源是用latin1编码的,而不是utf8,这似乎导致了这个问题。有哪种方法可以解析latin1或CP1252编码?
答案 0 :(得分:1)
亚马逊的支持证实,这是他们最终的错误,而且据我所知,修复了它。
答案 1 :(得分:0)
您已经请求parse.com以utf-8发送数据。
注意以下几点:
"Content-Type": "application/x-www-form-urlencoded; charset=utf-8",
"Accept-Charset": "utf-8"
将这些值更改为latin1可能会有效,如果您可以与您的同事相提并论。
然而,parse.com论坛上的this问题可能会对您的问题有所了解。它可能是客户(您)的问题。你有没有尝试改变你方的编码?