Очень часто возникает необходимость перекодировать текстовый файл, например, перенаправленный вывод консольного приложения имеет кодировку CP866, что не совсем приемлемо для отправки по почте. Предлагаю воспользоваться следующим скриптом на языке JScript:
if (WScript.Arguments.Length < 1)
{
WScript.Echo("Usage: oem2ansi.js filetoconvert.txt");
WScript.Quit();
}
var Stream1 = WScript.CreateObject("ADODB.Stream");
var Stream2 = WScript.CreateObject("ADODB.Stream");
Stream1.Type = 2;
Stream1.Mode = 3;
Stream1.Charset = "cp866";
Stream1.Open();
Stream1.LoadFromFile(WScript.Arguments(0));
Stream2.Type = 2;
Stream2.Mode = 3;
Stream2.Charset = "windows-1251";
Stream2.Open();
Stream1.CopyTo(Stream2,-1);
Stream1.Close();
Stream2.SaveToFile(WScript.Arguments(0),2);
Stream2.Close();
ADODB.Stream поддерживает великое множество кодировок, в том числе UTF-8, с полным перечнем можно ознакомиться в реестре по следующему пути: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Charset
.
Формат запуска скрипта: cscript.exe //nologo oem2ansi.js путь_к_файлу_для_перекодирования
Спасибо огромное за идею.
На основе вашего скрипта написал необходимую мне процедурку.
Столкнулся с проблемой перекодировки текстовых файлов и поскольку опыта у меня маловато очень много времени провел в интернете в поисках решения, пока не натолкнулся на ваш скрипт.
Еще раз спасибо.
Не за что. Решение с ADODB.Stream, конечно, не идеально, но в любом случае проще и производительней самописной процедуры на JScript.