Node.js (node-red) преобразование кодировки
Столкнулся с проблемой передачи кириллицы в binary buffer через serial port. Как я не пытался подобрать кодировку - все мои попытки были безуспешны.
//msg.payload = iconvLite.decode(msg.payload, 'utf8');
msg.payload = new Buffer.from(msg.payload);
Пробовал преобразовывать кодировку через библиотеку iconv-lite, а так же получать строку таким образом:
msg.payload = new Buffer.from(msg.payload, 'binary');
Все равно получаю на выходе "крякозябры":

Ответы (1 шт):
Автор решения: nörbörnën
→ Ссылка
Обычно внутри таких устройств используется cp866.
Попробуйте на простых примерах, типа такого:
const Iconv = require('iconv').Iconv;
const textToDevice = Iconv('utf8', 'cp866');
const textFromDevice = Iconv('cp866', 'utf8');
const incomingText = 'водители пассажиры движение';
const asciiText = textToDevice.convert(incomingText);
const asciiBuffer = Buffer.from(asciiText);
// подразумеваю, что тут asciiBuffer будет послан на устройство
const outcomingText = textFromDevice.convert(asciiBuffer).toString('utf8');
console.log(outcomingText);
Попробуйте ещё ascii в том же ключе.
Если это подойдёт то имейте виду, что таблица символов там небольшая и в ней может не оказаться Ґ, Є, Ї.
