I've created simple firefox add-on, which should search for selected on page substring in files. Everything is ok until I try to search for substring in some specific language, russian fo example. The search command executed using call to windows cmd command propmt as follow:
function getShell()
{
var env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment);
var shell = new FileUtils.File(env.get("COMSPEC"));
var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
process.init(shell);
return process;
}
var shell = getShell();
var text = "россия";
var folder = "c:\\temp\\test\\*.*";
var cmd = "chcp 65001 & c:\\progra~1\\gnuwin32\\bin\\grep.exe -i -r " + text + " " + folder + " > c:\\temp\\test\\output.txt";
cmd = utf16to8(cmd);
args = ["/k", cmd];
shell.run(true, args, args.length);
So, I've tried deode utf-16 to utf-8 and execute (changing the code page inside shell execution) with no success. But I've succeeded as follow:
var cmd = "chcp 1251 & c:\\progra~1\\gnuwin32\\bin\\grep.exe -i -r " + text + " " + folder + " > c:\\temp\\test\\output.txt";
cmd = UnicodeToWin1251(cmd);
args = ["/k", cmd];
shell.run(true, args, args.length);
The last one works fine, but it does not work with other languages. How to convert internal javascript string to utf-8 and execute command usig 65001 codepage?
UnicodeToWin1251 taken here utf16to8 taken here