2017-06-27 12 views
0

私はガルプタスクの一部として、コマンドラインスクリプトを実行している:デコードANSI出力を自動的

function runSQLScript(script) { 
    child_process.execFile('sqlcmd', [ 
     '-S', process.env.DB_SERVER, 
     '-U', process.env.DB_USER, 
     '-P', process.env.DB_PASSWORD, 
     '-d', process.env.DB_DATABASE, 
     '-f', 'i:65001', 
     '-i', script 
    ], { 
     cwd: '../sql/sqlcmd' 
     //, encoding: "???" 
    }, function(error, stdout, stderr){ 
     if (error !== null) { 
      console.log("" + stdout); 
      console.error("" + error); 
     } 
     if (stderr.length>0) { 
      console.error('' + stderr); 
     } 
    }); 
} 
gulp.task('sql', function(){ 
    runSQLScript('install-app.sql'); 
}); 

私は、通常のコマンドプロンプトからスクリプトを実行すると、実行ファイルが検出さ適切なエンコーディングで出力します。

ノードはデフォルトでUTF-8とdoesn't seem to support Windows encodingsにデフォルト設定されているので、私のGulpタスクを進める方法はわかりません。

スクリプトの出力をデフォルトのANSIコードページ(私のPCの850で問題がある場合)から適切にデコードするための組み込み方法がありますか、または変換パッケージをインストールしてそれを自分で行う必要がありますか?

+0

Windowsのエンコードはそうでもない東南アジア – slebetman

+0

@slebetmanのヨーロッパ、南北アメリカのほとんどのとほとんどの一般 'latin1'です。西ヨーロッパ(私は他の地域では話すことができません)では、コマンドプロンプトのデフォルト値はCP850(古いMS-DOSコードページ)で、CP1252(古いWindowsコードページ)です。彼らは両方ともLatin-1とは異なる。 –

答えて

0

私はそれを行う方法を見つけることができませんでした。レコードの場合

、可能 マニュアル方法は次のようになります。

const iconv = require('iconv-lite'); 
console.log(iconv.decode(stdout, "CP850")); 
console.error(iconv.decode(stderr, "CP850")); 
関連する問題