Я использую команду child_process.exec
для запуска команды, которая включает в свой вывод некоторые специальные символы, но они неизменно интерпретируются Node.js в качестве замещающих символов (\uFFFD
). Следующий фрагмент кода должен продемонстрировать такое поведение достаточно:Как отображать специальные символы, возвращаемые child_process.exec?
require("child_process").exec("echo äëïöü", function(stderr, stdout) {
console.log(stdout);
});
Есть ли способ, я могу определить, что специальные символы возвращаются на выходе на самом деле? Я использую Windows, если это актуально.
Какой самый лучший способ отображения необработанных байтов в соответствующие им символы Юникода? Например, буфер, возвращенный в этом примере, заполняется октетами, представленными как '132',' 137', '139',' 148' и '129'. Как перевести это в строку «äëïöü»? – Hydrothermal
Это зависит от вашей среды. Вы можете посмотреть 'process.env.LC_CTYPE' или' process.env.LANG' или выполнить 'locale charmap' в дочернем процессе для определения используемой текущей кодировки. Если это не UTF-8 или любая другая кодировка, для которой узел имеет встроенную поддержку, вам нужно будет изучить с помощью 'iconv' /' iconv-lite' модулей на npm, чтобы делать конверсии для вас. – mscdex
Получил, спасибо! Я использовал 'iconv-lite' для декодирования с использованием моей текущей кодовой страницы (437), и она отлично работает. – Hydrothermal