Node.js NodeJs解码为可读文本
问题 我想通过NodeJs使用IP地址从设备接收数据。但我收到了以下数据: 我尝试过的 这是我能够得到的代码,它仍然产生我上面描述的问题Node.js NodeJs解码为可读文本,node.js,Node.js,问题 我想通过NodeJs使用IP地址从设备接收数据。但我收到了以下数据: 我尝试过的 这是我能够得到的代码,它仍然产生我上面描述的问题 var app = require('http').createServer(handler); var url = require('url') ; var statusCode = 200; app.listen(6565); function handler (req, res) { var data = ''; req.on('data',
var app = require('http').createServer(handler);
var url = require('url') ;
var statusCode = 200;
app.listen(6565);
function handler (req, res) {
var data = '';
req.on('data', function(chunk) {
data += chunk;
});
req.on('end', function() {
console.log(data.toString());
fs = require('fs');
fs.appendFile('helloworld.txt', data.toString(), function (err) {
if (err) return console.log(err);
});
});
res.writeHead(statusCode, {'Content-Type': 'text/plain'});
res.end();
}
下面是我收到的console.log(req.headers)的结果
所以我的问题是,我如何解码数据?有人知道它们是什么类型的数据吗?使用
缓冲区来处理八位字节流
function handler (req, res) {
let body=[];
req.on('data', function(chunk) {
body.push(chunk);
});
req.on('end', function() {
body = Buffer.concat(body).toString('utf8');
...
你的程序运行得很好。正在发送的数据需要整理。你能帮我们举个例子吗?你是说从设备发送的例子数据吗?制造商没有给它。感谢您的及时回复。console.log(res.headers)
在handler()
中显示了什么?是的,我的意思是,@AmalinaAziz。你知道你收到的是什么样的请求对象吗?请写请求对象。我没有定义@请修改此内容并让我知道:/chunk
已经是一个缓冲区。另外,Buffer.concat
需要一个缓冲区实例数组,而不是单个实例,应该在end
处理程序中调用。@robertklep非常感谢!最后:因为响应是应用程序/octet流
,很可能是二进制格式,所以对其调用toString()
可能会损坏它(但是,OP似乎不知道数据的格式,所以可能是任何格式)。@AmalinaAziz你为什么建议编辑?前一个对你有用吗?