В официальном блоге Node.JS вчера (25 ноября)
объявлено о выходе новой версии Node, под номером 0.6.3. Изменения не очень значительны: исправлен десяток ошибок да недочётов.
Я счёл это небезынтересным подарком ко дню рождения (по приятному совпадению, 25 ноября мне исполнилось 33 года). Однако в тот же день, задавшись вопросом «
Как принять вывод Windows-команды, вызванной из node.js?», я начал в Windows XP серию экспериментов, конечным итогом которой стало обнаружение
сразу двух ошибок Node при работе с кодировками под Windows.
Во-первых, при вызове команды методом
require('child_process').exec(…) Node ожидает от неё вывода в кодировке
UTF-8, тогда как в русифицированной системе Windows команды (например,
dir) выводят текст в кодировке CP866.
Во-вторых, если дочерний консольный процесс изменит кодировку консоли, то будет воздействовать и на кодировку консоли родительского процесса Node (в частности, на вывод методом
console.log) — получается, что консоль у них одна и та же,
или что-то в этом же дýхе.
А теперь немного подробностей.