Наверное многие сталкивались с проблемой смены кодировки в файле посредством Windows. В данной статье я расскажу как можно сменить кодировку посредством VBScript.
Из всех рассмотренных вариантов я решил остановиться на создании объекта ADODB.Stream. Поставим себе задачу преобразовать файл кодировки ANSI в UTF-8. Суть нашего способа будет такова:
- создаем объект ADODB.Stream с параметрами исходной кодировки
- открываем исходный файл
- считываем в переменную весь файл
- меняем параметры ADODB.Stream
- записываем содержимое файла
Для начала создадим объект ADODB.Stream.
Set str= CreateObject("ADODB.Stream")
Установим необходимые параметры, откроем и прочитаем файл.
str.Type = 2 str.Charset = "windows-1251" str.Open() str.LoadFromFile("C:\ANSI.txt") Text = ADODBStream.ReadText() str.Close()
str.Type = 2 говорит о том, что будет текстовый тип данных. Для справки, если бы мы установили str.Type равным единице, то объект бы считал, что будет daftar situs judi slot online terpercaya бинарный тип данных. В официальной документации написано, что по умолчанию используется текстовый тип, т.е. Type = 2.
str.Charset = «windows-1251» указывает на кодировку. По умолчанию используется кодировка «Unicode».
Text = ADODBStream.ReadText() считывает текстовый файл целиком из объекта. Данные должны быть обязательно текстовыми, для считывания бинарных данных используется другой метод. Также это метод имеет параметры
- ReadText(-1) — считывание файла целиком, является параметром по-умолчанию
- ReadText(-2) — построчное считывание файла
str.Close() закрывает объект ADODB.Stream, но не удаляет его из памяти, следовательно его можно будет заново открыть с другими параметрами.
str.Charset = "UTF-8" str.Open() str.WriteText(Text) str.SaveToFile "C:\UTF-8.txt", 2 str.Close()
str.WriteText(Text) записывает текст в объект, для записи бинарных данных используется другой метод. Также вторым параметром может быть указано, добавлять ли разделитель строки.
str.SaveToFile «C:\UTF-8.txt», 2 записывает файл по указанному пути. Второй параметр может принимать значения:
- 1 создает файл, если он еще не существует, является значение по умолчанию.
- 2 перезаписывает данные в имеющемся файле
Вот и все, весь получившийся код ниже.
Set str= CreateObject("ADODB.Stream") str.Type = 2 str.Charset = "windows-1251" str.Open() str.LoadFromFile("C:\ANSI.txt") Text = ADODBStream.ReadText() str.Close() str.Charset = "UTF-8" str.Open() str.WriteText(Text) str.SaveToFile "C:\UTF-8.txt", 2 str.Close()comments powered by HyperComments