我需要一些字符编码方面的帮助。 我想以jsonp:
的形式访问这个apihttp://api.mymemory.translated.net/get?q=<some phrase>&langpair=de|en
这有效:
但这不是:
且L%C3%B6sung
和L%25C3%25B6sung
也不起作用,
即使没有json2jsonp,它也能正常工作。
任何想法/替代品?
答案 0 :(得分:0)
似乎JSON2JSONP不支持非ASCII字符。
http://json2jsonp.com/?url=http%3A%2F%2Fapi.mymemory.translated.net%2Fget%3Fq%3DL%25C3%25B6sung%26langpair%3Dde%257Cen&callback=cbfunc
应返回正确的JSONP,但实际上会发生错误,因为JSON2JSONP使用GET /get?q=L\xc3\xb6sung&langpair=de|en HTTP/1.1
而不是GET /get?q=L%C3%B6sung&langpair=de%7Cen HTTP/1.1
发送无效的HTTP GET请求。
如果您可以使用XMLHttpRequest和JSON.parse,则不再需要JSONP。
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
cbfunc(JSON.parse(xhr.responseText));
}
};
xhr.open("GET", "http://api.mymemory.translated.net/get?q=L%C3%B6sung&langpair=de%7Cen");
xhr.send();