2014-11-06 3 views
0

У меня есть проект с использованием Node.JS. Мне нужно отправить строку на терминал (COM-порт UART) в Latin1. Я просто понял, что я не могу создать объект String с 1-байтовой кодировкой (например, Latin-1).Как заставить использовать кодировку Latin-1 вместо UTF-16 для строк в JavaScript?

Мне нужно создать строку из массива байтов. Байты, что менее 128 байтов ASCII и строка с этими байтами, всегда выглядят хорошо. Но если я передаю байты, превышающие 127, я всегда получаю строку с 2 байтами (в UTF-16).

Я действительно хочу только 1-байтовое представление каждого байта. Как я могу это достичь?

+0

Возможного дубликат [проблемы кодирования при записи на консоль в Node.js] (http://stackoverflow.com/questions/13735228/encoding-problems-when-writing-to-the-console-in-node-js) – nwellnhof

+0

@nwellnhof, это не та же проблема. В вопросе, на который вы ссылались, проблема заключается в появлении вывода. Но в моем вопросе мне нужно получить объект String в 1-байтной кодировке. –

+0

Вы не можете изменить кодировку строк JavaScript. Вам понадобится API, который принимает байтовые массивы. – nwellnhof

ответ

0

IconV мог возможно работать

Что-то вроде (непроверенные коды!):

var Buffer = require('buffer').Buffer; 
    var Iconv = require('iconv').Iconv; 

    var iconv = new Iconv('UTF-16','latin1'); 

    bytes.forEach(function(byte){ 
     var bufferbyte = iconv.convert(byte); 
    }); 
+0

Я попытался использовать iconv, но проблема: ни один метод не вернет строку в нужной кодировке. Только байтовое представление. Мне нужно отправить строку на терминал в latin1. Этот lib не может помочь здесь. –

 Смежные вопросы

  • Нет связанных вопросов^_^