вторник, 17 июня 2008 г.

Превратности командной строки Windows

Если сделать вывод в текстовый файл результат консольной команды dir (например, так: "dir c:\*.* >out.txt", то в файле экспорта все названия файлов будут в кодировке DOS. Супер. В консоли имена файлов русские, всё Ок. А в файле - мусор нечитаемый.

Есть, правда вариант с запуском командного процессора cmd с параметром "/u", тогда текст будет выводиться в UNICODE. Делаем финт ушами:
cmd.exe /u /c dir c:\*.* >out.txt

Но это тоже не суперудобно, так как хотелось бы получить файл в кодировке win1251 для последующего парсинга. Есть ещё у cmd.exe параметр "/a", который говорит "Вывод результатов выполнения команд в формате ANSI". Но это не работает, так как результат экспорта всё равно идёт в 866 кодировке. Вот такие пирожки.

Поэтому проблему решили с помощью дополнительной функции StrConvert, добавленную в библиотеку функций WinScript. Функция умеет перекодировать текст из 866 в 1251 и обратно. Причём с поддержкой украинских букв. В следующей сборке скриптового движка можно будет воспользоваться этой функцией.
_____________________________

Понравилась статья? Подпишись на RSS!


Комментариев нет: