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 в том же ключе.

Если это подойдёт то имейте виду, что таблица символов там небольшая и в ней может не оказаться Ґ, Є, Ї.

→ Ссылка