gpt4 book ai didi

javascript - Node.js 和 Instagram API, 'Could not decode a text frame as UTF-8'

转载 作者:太空宇宙 更新时间:2023-11-04 01:14:15 25 4
gpt4 key购买 nike

我正在使用 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', 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));

当我启动 Node 服务器并将浏览器指向我的 url 时,我从 chrome 和 firefox 获取此信息:

Could not decode a text frame as 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);
});

此外,为什么要将“输出”转换为对象,然后再转换回字符串,而不将其传递到响应中收到的 Websocket。

关于javascript - Node.js 和 Instagram API, 'Could not decode a text frame as UTF-8',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12520603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com