Node.js对响应的奇怪编码

Node.js weird encoding on response?

本文关键字:编码 响应 js Node      更新时间:2023-09-26

我使用第三方api来获取一些图像的响应给我这个。我想这不是base64吧?

"����'u0000'u0010JFIF'u0000'u0001'u0001'u0000'u0000'u0001'u0000'u0001'u0000'u0000��'u0000C'u0000'b'u0006'u0006'u0007'u0006'u0005'b'u0007'u0007'u0007't't'b'n'f'u0014'r'f'u000b'u000b'f'u0019'u0012'u0013'u000f'u0014'u001d'u001a'u001f'u001e'u001d'u001a'u001c'u001c $.' '",#'u001c'u001c(7),01444'u001f'9=82<.342��'u0000C'u0001't't't'f'u000b'f'u0018'r'r'u00182!'u001c!22222222222222222222222222222222222222222222222222��'u0000'u0011'b'u0002!'u0002&'u0003'u0001'"'u0000'u0002'u0011'u0001'u0003'u0011'u0001��'u0000'u001f'u0000'u0000'u0001'u0005'u0001'u0001'u0001'u0001'u0001'u0001'u0000'u0000'u0000'u0000'u0000'u0000'u0000'u0000'u0001'u0002'u0003'u0004'u0005'u0006'u0007'b't'n'u000b��'u0000"

发出请求的代码。

unirest.get("MYAPIROUTE")
.header("X-Mashape-Key", "MYKEY")
.end(function (result) {
  console.log(result.status, result.headers, result.body);
  res.send(result.body);
});

我的问题是,与node.js我如何解码这个,所以我可以发送客户端适当的图像?

分辨率:

unirest.get("MYAPIROUTE")
.header("X-Mashape-Key", "MYKEY")
.end(function (result) {
  console.log(result.status, result.headers, result.body);
  if(result.status==200) {
     var buffer = (new Buffer(result.body.toString()));
     res.end(buffer.toString("base64")); // output content as response body
     require('fs').writeFileSync('/some/public/folder/md5HashOfRequestedUrl.jpg', buffer);  // also write it to file
     delete buffer;
     return;
  }
  res.writeHead(result.status, result.headers);
  res.write(result.body);
  res.end();
});

参考:http://nodejs.org/api/buffer.html

假设它是一个图像。那么为什么不尝试设置

呢?
<img src="http://your-site.com/some/public/folder/md5HashOfRequestedUrl.jpg">

你可以在临时公用文件夹中写入响应文件,以避免对其他地方进行相同的请求。

第三方API应该有预期响应类型的数据类型,这样我们就可以弄清楚需要解码的格式是什么…

我的猜测是,它返回一个UTF-8字符串,尝试这个模块的解码函数解码字符串:https://www.npmjs.com/package/utf8