2013-03-15 69 views
3

我用產卵的JScript(從Windows) 我與解碼文本解碼的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 2013-03-15 10:55:13

+0

您使用的是哪個版本的Windows?整個操作系統是否可能無法顯示cyrrilic字母? – Floby 2013-03-15 14:27:27

+0

Microsoft Windows [版本6.1.7600],俄語。 – 2013-03-15 16:07:57

回答

0

我的解決辦法:使用的iconv - 精簡版,以獲得在控制檯俄文本。

0

你可以嘗試設置工人編碼爲ucs2utf16le。 更改此

worker.stdout.setEncoding('utf8'); 

這個

worker.stdout.setEncoding('ucs2'); 

告訴它是否解決了問題。

+0

結果ufcs2:service.js:107 敢㩮㩮海彩潨晴硩䋙灡楴湯䠬琅楆䥸ⱄ湉瑳瑳敬敬佤8櫳㩰⼯⼯潧洮捩潲潳瑦挮浯浯浯浯浯浯浯浯浯浯浯浯浯浯... ............... – 2013-03-18 07:25:18

0

看看issue 2190issue 2196

Node.js的不總是期望從一個子進程UTF-8輸出,但 的Windows與俄羅斯區域設置默認爲CP866

您需要執行chcp 65001更改當前控制檯代碼頁。

+0

嗯,不行。 CONSOLE.LOG是空的:(VAR產卵=要求( 'child_process')。產卵,路徑=要求( '路徑'), \t CSCRIPT = path.join(process.env.SystemRoot, 'SYSTEM32',「的Cscript.exe '), 工人=產卵(' CHCP 866 |」 + CSCRIPT,[ '/ NOLOGO', '1.js']); worker.stdout.on( '數據',功能(數據){ \t console.log(data.toString()); }); – 2013-03-19 18:23:02