背景
Node.jsから、コマンドライン実行をためそうと思いましたが、標準出力やエラー内容に日本語が含まれていると、文字化けする。。。
いろんなサイトをみてても、なんだかうまくいかなかったので、解決法をめも。
環境
- Windows 10 64bit
- Node.js(v18.0.0)
Node.jsのパッケージ
- cmd > npm install express
- cmd > npm install iconv-lite
test_exec.js
test_exec.js
const proc = require("child_process");
const iconv = require("iconv-lite");
proc.exec("dir", {encoding:"Shift_JIS"}, (error, stdout, stderr)=>{
console.log(`stdout:${iconv.decode(stdout,"Shift_JIS")}`)
console.log(`stderr:${iconv.decode(stderr,"Shift_JIS")}`)
})
⇒これで、日本語でも大丈夫になった!!
メモ
- exec実行時に文字コードをShift_JISにエンコードして、文字を出力するときにShift_JISでデコードすればよいだけだった。
わかれば一瞬だけど、結構時間かかった。。