2013-03-15 2 views
3

Я использую икру для JScript (из окон) Моей проблемы с декодированием текстомnodejs декодирование (дочерние процессы использование)

???? ??? T-SQL Microsoft SQL Server 2012

???? ??? - русский текст.

var worker,path = require('path'), spawn = require('child_process').spawn, cscript = path.join(process.env.SystemRoot, 'system32', 'cscript.exe') 

function startCscript() { 
    worker = spawn(cscript, [ '/nologo', 'testwsh.js' ]); 
    worker.stdout.setEncoding('utf8'); 
    worker.stdout.on('data', onData); 
} 

function onData (data) { 
    console.log(data.toString()); 
} 
startCscript(); 

Как получить русские буквы? Спасибо всем)

+0

Возможно ли, что ваш cscript выводится так? – user568109

+0

Какую версию окон вы используете? Возможно ли, что вся ОС не может отображать циррологические буквы? – Floby

+0

Microsoft Windows [версия 6.1.7600], русский. –

ответ

0

Мое решение: используйте iconv-lite, чтобы получить русский текст в консоли.

0

Можете ли вы попытаться установить рабочую кодировку как ucs2 или utf16le. Изменить этот

worker.stdout.setEncoding('utf8'); 

к этому

worker.stdout.setEncoding('ucs2'); 

Скажите, если он решает эту проблему.

+0

результат ufcs2: service.js: 107 敢 楧 㩮 海 彩 潨 晴 硩 䌺 灡 楴 污 佤 佤 佤 佤 佤 佤 佤 佤 佤 ⽫ ⽫ ⽫ ⽫ ⽫ ⽫ ⽫ ⽫ ⽫ ⽫ ⽫ ⽫. ............... –

0

взгляд на issue 2190 и issue 2196:

Node.js это всегда ожидать UTF-8 выход из дочернего процесса, но для Windows с российскими локали по умолчанию для CP866

вам необходимо выполнить chcp 65001 для изменения текущей кодовой страницы консоли.

+0

Хм, не работай. Console.log пуст :(var spawn = require ('child_process'). Spawn, path = require ('path'), \t cscript = путь.join (process.env.SystemRoot, 'system32', 'cscript.exe '), работник = икру (' CHCP 866 |»+ Cscript, [ '/ NOLOGO', '1.js']); worker.stdout.on ('данные', функция (данные) { \t console.log (data.toString()); }); –