Заметки практикующего сисадмина

Дядя Саша Кузьмич пишет о работе

Скрипт для перекодировки текстовых файлов

Очень часто возникает необходимость перекодировать текстовый файл, например, перенаправленный вывод консольного приложения имеет кодировку 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 путь_к_файлу_для_перекодирования

Комментарии

2 ответа для «Скрипт для перекодировки текстовых файлов»

  1. Аватар пользователя Павел Ватолин
    Павел Ватолин

    Спасибо огромное за идею.
    На основе вашего скрипта написал необходимую мне процедурку.
    Столкнулся с проблемой перекодировки текстовых файлов и поскольку опыта у меня маловато очень много времени провел в интернете в поисках решения, пока не натолкнулся на ваш скрипт.
    Еще раз спасибо.

  2. Аватар пользователя Александр Кузьмин

    Не за что. Решение с ADODB.Stream, конечно, не идеально, но в любом случае проще и производительней самописной процедуры на JScript.

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.