Javascript Node.js&;instagram API和#x27;无法将文本帧解码为UTF-8';
我正在使用http node.js模块进行一个简单的instagram API调用。只是一个简单的请求,如下所示:Javascript Node.js&;instagram API和#x27;无法将文本帧解码为UTF-8';,javascript,node.js,instagram,Javascript,Node.js,Instagram,我正在使用http node.js模块进行一个简单的instagram API调用。只是一个简单的请求,如下所示: getJSON : function(options, on_result, on_error) { var req = http.request(options, function(res) { var output = ''; res.setEncoding('utf8'); res.on('data', funct
getJSON : function(options, on_result, on_error) {
var req = http.request(options, function(res) {
var output = '';
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log(chunk);
return output += chunk;
});
return res.on('end', function() {
var obj = JSON.parse(output);
on_result(res.statusCode, obj);
});
});
req.on('error', function(err) {
on_error(err);
});
return req.end();
}
on_result函数只是使用JSON.stringify将其字符串化,并使用以下函数通过web套接字发送:
var connection = request.accept(null, request.origin);
connection.sendUTF(JSON.stringify(obj));
当我启动节点服务器并将浏览器指向我的url时,我从chrome和firefox获得以下信息:
无法将文本帧解码为UTF-8
我昨天运行这个绝对没有问题
在http“on data”功能中,我将数据注销到控制台,屏幕上显示的内容看起来正常,但某些转义字符如下:
"text":"\ud83d\ude1d\ud83d\ude02\ud83d\udc4f\ud83d\udc8b"
"full_name":"\ud83c\uddee\ud83c\uddf9\u21e8\u261eSara\u261c\u21e6\ud83c\uddee\ud83c\uddf9"
然后,当JSON字符串化时,这些转义序列变成:
"text":"<d83d><de1d><d83d><de02><d83d><dc4f><d83d><dc8b>"
"full_name":"<d83c><ddee><d83c><ddf9>â¨âSaraââ¦<d83c><ddee><d83c><ddf9>"
“文本”:
“全名”:“莎拉”
这就解释了为什么浏览器抱怨UTF-8
我做错什么了吗 您可以按如下方式尝试转义\u:
return res.on('end', function() {
var escaped_output = output.replace(/\\u/g, "\\\\u"); //<--
var obj = JSON.parse(escape_output);
});
返回res.on('end',function(){
var escaped\u output=output.replace(/\\u/g,“\\\\u”);//您可以按如下方式尝试转义\u:
return res.on('end', function() {
var escaped_output = output.replace(/\\u/g, "\\\\u"); //<--
var obj = JSON.parse(escape_output);
});
返回res.on('end',function(){
变量转义\u输出=输出。替换(/\\u/g,“\\\\u”);//我已经确定数据是这样来自instagram的,除了尝试转义或删除非utf-8字符外,没有什么可以做的。因为只有某些字段是这样的,我的应用程序不需要这些字段,所以我可以绕过它。我已经确定数据是来自instagram的除了尝试转义或删除非utf-8字符之外,没有什么可以做的。因为只有某些字段是这样的,并且我的应用程序不需要这些字段,所以我可以绕过它。您可能需要在请求中设置接受类型。感谢提示,但已经设置了“接受”:“application/json”和“Accept Charset”:“utf-8”您可能需要在请求中设置Accept类型。感谢您提供的提示,但是已经设置了“Accept”:“application/json”和“Accept Charset”:“utf-8”,因为我的最终目标不是仅从API向浏览器发送json字符串,因此在请求期间对对象进行字符串化之前,还需要对其执行其他操作响应浏览器。因为仅仅从API向浏览器发送JSON字符串并不是我的最终目标,所以在响应浏览器的过程中,在对对象进行字符串化之前,还需要对其执行其他操作。