Что нового

Конвертировать файл из ANSI в UTF8 (Unicode)

Suppir

Продвинутый
Сообщения
967
Репутация
62
Добрый день!

Может быть кто-то уже делал. В общем, скачиваю страницу html с помощью InetGet в файл. А этот файл потом открывается козябрами. Его нужно сначала конвертировать в UFT8, после чего он нормально открывается.

Есть ли у кого готовая функция по конвертации файлов из ANSI и UFT8?


Добавлено:
Сообщение автоматически объединено:

Пример страницы:
http://law.admtyumen.ru/law/view.htm?id=129687@egDocs

Я пишу:
Код:
InetGet("http://law.admtyumen.ru/law/view.htm?id=129687@egDocs", "temp.html")


Страница потом открывается "козябрами".


Добавлено:
Сообщение автоматически объединено:

Попробовал конвертировать с помощью библиотеки Encoding от Creator'а. Использовал функции:
_Encoding_ANSIToUTF8
_Encoding_StringToUTF8

Все равно козябры получаются в браузере.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Suppir [?]
скачиваю страницу html с помощью InetGet в файл
Код:
Local $sFile = @ScriptDir & '\test.html', $bRead

If FileExists($sFile) Then FileDelete($sFile)
$bRead = InetRead('http://law.admtyumen.ru/law/view.htm?id=129687@egDocs', 17)
If @error Then Exit 13
FileWrite($sFile, BinaryToString($bRead, 4))
ConsoleWrite(FileRead($sFile) & @LF)
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Благодарствую!


Добавлено:
Сообщение автоматически объединено:

А можно ли уже скачанный файл конвертнуть?
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
Suppir [?]
скачанный файл конвертнуть
Во что? Я попробовал ваш скрипт (из одной строки) - файл получается в кодировке UTF-8 без BOM. Открывается в читабельном виде и в IE10 и в блокноте.
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
InnI [?]
Во что? Я попробовал ваш скрипт (из одной строки) - файл получается в кодировке UTF-8 без BOM. Открывается в читабельном виде и в IE10 и в блокноте.

У меня блокнот akelPad нормально читает, но в Chrome или IE10 открывается козябрами (Windows 8, IE 10).
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Suppir,
Вы как использовать полученный файл будете?
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Вообще, мне нужно парсер для сайта написать, чтобы автоматически скачивать все документы с сайта:
http://law.admtyumen.ru/law/index/law-duma.htm
http://law.admtyumen.ru/law/index/government.htm
http://law.admtyumen.ru/law/index/governor.htm
http://law.admtyumen.ru/law/index/executive.htm
http://law.admtyumen.ru/law/index/OMSU.htm

Там есть документы в разных форматах: rar, zip, pdf, doc, docx и так далее. Когда документ без файла, то есть чистый HTML, я сохраняю только HTML-файл, чтобы пользователь мог его потом нормально открыть в браузере.



Но файлы HTML вот так открывают::

 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
Suppir
Попробуйте добавить BOM
Код:
InetGet("http://law.admtyumen.ru/law/view.htm?id=129687@egDocs", "temp.html")
$f = FileOpen("temp.html", 256) ; чтение без BOM
$txt = FileRead($f)
FileClose($f)
$f = FileOpen("temp.html", 128 + 2) ; перезапись с BOM
FileWrite($f, $txt)
FileClose($f)
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Сработало! :smile:

Короче, я сначала читаю просто через InetGet. Затем делаю парсинг html-страницы в формате Ansi. Если там нет бинарных приложений, то делаю:
Код:
$f = FileOpen("temp.html", 128 + 2) ; перезапись с BOM
FileWrite($f, $txt)


Теперь без козябр открывается. Всем спасибо.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Suppir,
А если примерно так?
Код:
Local $sFile = @ScriptDir & '\test.html', $sRead, $hFile

If Not InetGet('http://law.admtyumen.ru/law/view.htm?id=129687@egDocs', $sFile, 17) Then Exit 13
$hFile = FileOpen($sFile, FileGetEncoding($sFile))
$sRead = FileRead($hFile)
FileClose($hFile)
$hFile = FileOpen($sFile, 2)
FileWrite($hFile, $sRead)
FileClose($hFile)
Проверял в FireFox, Opera, Google Chrome, IE, Yandex (других нет), у меня нормально открывают все.
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
madmasles
Тоже попробую, спасибо.
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
madmasles
Так я и не спорю. Я бы удивился, если бы было наоборот.
Просто Suppir нужно было выбрать в браузере кодировку UTF-8 и ничего не пришлось бы "конвертировать".
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Верх