From 49be816225772b5711c97ddea5a0a56a405cb764 Mon Sep 17 00:00:00 2001 From: nuintun Date: Thu, 14 Jan 2016 12:23:21 +0800 Subject: [PATCH] update files --- bin/thread.js | 18 ++++++++++++++++-- package.json | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/bin/thread.js b/bin/thread.js index 5b670e4..8a6e5fa 100644 --- a/bin/thread.js +++ b/bin/thread.js @@ -7,6 +7,7 @@ var path = require('path'); var ipc = require('ipc-main'); var iconv = require('iconv-lite'); +var jschardet = require('jschardet'); var Emulator = require('./emulator'); // cache @@ -21,6 +22,7 @@ module.exports = { case 'start': if (!thread || !thread.connected) { var env = {}; + var encoding; Object.keys(process.env).forEach(function (key){ env[key] = process.env[key]; @@ -37,11 +39,23 @@ module.exports = { }); thread.on('data', function (data){ - event.sender.send('emulator', 'data', project, iconv.decode(data, 'gbk')); + if (encoding === undefined) { + encoding = jschardet.detect(data).encoding; + } + + data = encoding ? iconv.decode(data, encoding) : data.toString(); + + event.sender.send('emulator', 'data', project, data); }); thread.on('error', function (error){ - event.sender.send('emulator', 'error', project, error.toString()); + if (encoding === undefined) { + encoding = jschardet.detect(error).encoding; + } + + error = encoding ? iconv.decode(error, encoding) : error.toString(); + + event.sender.send('emulator', 'error', project, error); }); thread.on('close', function (signal){ diff --git a/package.json b/package.json index ca9ca06..71caf42 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "start": "electron ." }, "dependencies": { + "jschardet": "^1.4.1", "iconv-lite": "^0.4.13" } }