Что нового

Перекодировка файлов

Сообщения
60
Репутация
-2
Привет. Вот у меня есть задача. Мне надо переконвертировать файл из одной кодировки в другую.
В данном случае, из DOS(866) в ANSII.
Мне надо считывать этот файл в массив, а потом его записывать в другой файл?
Или есть вариант проще? Может быть, есть какая-нибудь готовая функция? Как лучше сделать?
 
Автор
Parazit
Сообщения
60
Репутация
-2
Библиотека функций это, конечно, хорошо, но как мне работать с файлами?
Там только работа со строками.
 
Автор
Parazit
Сообщения
60
Репутация
-2
Зачем мне сторонняя утилита, если есть AutoIt?
 
A

Alofa

Гость
Parazit сказал(а):
... как мне работать с файлами?..
А что есть файл, который нужно перекодировать?
Для меня так это некий текстовый контейнер, который нужно прочитать, преобразовать данные и сохранить их в такой же контейнер с таким же расширением.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Parazit
Да, паразит, ответь Alofa, он задал правильный вопрос, что для тебя - файл? И как ты себе представляешь процесс работы с файлами? Думаешь там где то спрятана кодировка, в каком нибудь месте?
 
Автор
Parazit
Сообщения
60
Репутация
-2
Вот я и хочу узнать, какой есть вариант более практичней и более правильный.
 

Skif_off

Знающий
Сообщения
173
Репутация
12
Parazit
Практичным и правильным - не значит универсальным. Можно попробовать открыть как ANSI, прочитать, перекодировать, записать, как-то так
Код:
#Include <Encoding.au3>

Local $hFile, $sFile, $iFlag = 0
; Уточняем флаги чтения/записи для версий старше 3.3.14.0
If StringReplace(@AutoItVersion, '.', '') >= 33140 Then $iFlag = 512 

$hFile = FileOpen("test.txt", $iFlag)
If $hFile = -1 Then
    MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
    Exit
EndIf
$sFile = FileRead($hFile)
FileClose($hFile)

$sFile = _Encoding_866To1251($sFile)

$hFile = FileOpen("test.txt", 2 + $iFlag)
If $hFile = -1 Then
    MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
    Exit
EndIf
FileWrite($hFile, $sFile)
FileClose($hFile)
 
Автор
Parazit
Сообщения
60
Репутация
-2
Skif_off, спасибо. Ваш скрипт работает, как следует.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Parazit [?]
Ваш скрипт работает, как следует.

[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
 
Верх