diff --git a/package-lock.json b/package-lock.json index c0782bd..4c60ad8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6163,6 +6163,11 @@ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "optional": true }, + "detect-onebyte-encoding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/detect-onebyte-encoding/-/detect-onebyte-encoding-1.0.2.tgz", + "integrity": "sha512-JmhHYhr7w6GlklJTzws0QCfsX71s57q1zkQHQ8sOJmMdtZ5W+5Mwsw8wKGicfR79cZxMXO+0sqQagwRTxRFdIw==" + }, "dev-null": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/dev-null/-/dev-null-0.1.1.tgz", @@ -6783,7 +6788,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, diff --git a/package.json b/package.json index 061a477..02db025 100644 --- a/package.json +++ b/package.json @@ -117,6 +117,7 @@ "cheerio": "^1.0.0-rc.2", "compare-versions": "^3.1.0", "debug": "^3.1.0", + "detect-onebyte-encoding": "^1.0.2", "electron-context-menu": "^0.9.1", "electron-log": "^2.2.14", "electron-updater": "^2.21.10", diff --git a/src/background/sphinx.js b/src/background/sphinx.js index 8934e02..24fb704 100644 --- a/src/background/sphinx.js +++ b/src/background/sphinx.js @@ -12,6 +12,7 @@ const findFiles = require('./findFiles') const _ = require('lodash') const isRunning = require('is-running') const portCheck = require('./portCheck') +const detectOnebyteEncoding = require('detect-onebyte-encoding') const findGoodPort = async (port, host) => { while (!(await portCheck(port, host))) { @@ -150,8 +151,18 @@ const writeSphinxConfig = async (path, dbPath) => { isInitDb = true } + // fix db path under windows platform (one-byte path) if(/^win/.test(process.platform)) - config = iconv.encode(config, 'win1251') + { + let encoding = detectOnebyteEncoding(dbPath) + let encoding2 = detectOnebyteEncoding(path) + if(encoding != encoding2) + { + encoding = detectOnebyteEncoding(config) + } + config = iconv.encode(config, encoding) + logT('sphinx', 'config encoded to', encoding) + } fs.writeFileSync(`${path}/sphinx.conf`, config) logT('sphinx', `writed sphinx config to ${path}`)