Javascript 处理Node.js套接字数据

Javascript 处理Node.js套接字数据,javascript,string,node.js,sockets,networking,Javascript,String,Node.js,Sockets,Networking,我让服务器从客户端[GPS设备]接收数据。我无法以可读的格式显示数据(即从客户端获得的结果)。下面是我尝试过的东西 做: console.log(data) 我明白了 <Buffer d0 d7 3d 00 c4 56 7e 81> 但我得到了不想要的结果:见下文: ��A�V~� 这是我的全部代码: var net = require('net'); var fs = require('fs'); var server = net.createServer(function

我让服务器从客户端[GPS设备]接收数据。我无法以可读的格式显示数据(即从客户端获得的结果)。下面是我尝试过的东西

做:

console.log(data)
我明白了

<Buffer d0 d7 3d 00 c4 56 7e 81>
但我得到了不想要的结果:见下文:

��A�V~�
这是我的全部代码:

var net = require('net');
var fs = require('fs');

var server = net.createServer(function (socket) {
  console.log('Server started: Waiting for client connection ...');
  console.log('Client connected:port,address: '+socket.remotePort,      socket.remoteAddress);
  socket.on('data', function (data) {
        var date = new Date();
        var today = date.getDate()+'_'+date.getMonth();
        fs.appendFile(today+'_log.txt', data, function (err) {
          if (err) throw err;
            console.log(data.toString())

    });
 });
});

server.listen(my_port, my_ip);

谢谢您的输入。

假设缓冲区中的数据是7位ASCII

console.log(data.toString('ascii'))

将解决此问题。

根据文档,您必须指定编码以获取字符串而不是缓冲区:

Event: 'data'#
Buffer object
Emitted when data is received. The argument data will be a Buffer or String. Encoding of data is set by socket.setEncoding().
您可以配置套接字以获取UTF-8中的数据,例如,使用:

socket.setEncoding('utf8');
像这样做

socket.on('data', function (data) {
        var buff = Buffer.from(data);

但是请记住,很多GPS设备都使用little endian,因此稍后您还必须对数据进行解码。

您知道接收到的数据吗?它是base64编码还是ascii编码?没有使用编码的明确细节。我最大的问题之一。在不知道的情况下,protocal doc没有显示出多少帮助。反复试验可能会奏效。这里有个医生可以帮忙。我在供应商网站上找到了一些关于“ISO-8859-1”编码标准的内容。让我来了解一下。ascii编码给了我这个结果-
PW=\u0000DV~\u0001
这是唯一一个对我有意义的结果。
socket.on('data', function (data) {
        var buff = Buffer.from(data);