Что нового

[Файловая система] Как сохранять html файл в кодировке UTF-8?

Tapok

Новичок
Сообщения
204
Репутация
0
Код:
#include <File.au3>
#include <Array.au3>

Local $file_Read[0], $name_file_0[0]

$FileList =_FileListToArray(@ScriptDir, "*.html", 0)
DirCreate(@ScriptDir & '\new')

FileDelete(@ScriptDir & '\new\*.html')

for $i=1 to $FileList[0] Step 1
	$hFile = FileOpen(@ScriptDir & '\' & $FileList[$i], 0)
	If $hFile = -1 Then
		MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
		Exit
	EndIf
	$f = FileRead($hFile)
	_ArrayAdd($file_Read,$f)
	$f_wo_html = StringRegExp($FileList[$i],'(.+).html',3)
	_ArrayAdd($name_file_0,$f_wo_html)
	$name_file = '<title>' & $name_file_0[$i-1] & '</title>'
	$pattern = '<title>(.+)</title>'
	$output = StringRegExpReplace($f,$pattern,$name_file)
	FileWrite(@ScriptDir & '\new\new_' & $FileList[$i], $output)
Next

Программа в файлах html папки скрипта заменяет текст между тегами <title></title> на имя файла без расширения. Новые файлы сохраняются в папку "new".
Вопрос: как сделать, чтобы html файл сохранялся в кодировке UTF-8?
 

Вложения

  • html.ZIP
    894 байт · Просмотры: 2

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Tapok [?]
как сделать, чтобы html файл сохранялся в кодировке UTF-8?
Код:
$hFile = FileOpen(@ScriptDir & '\' & $FileList[$i], 256)


P.S. Как сделать, чтобы вы начали читать справку? :smile:
 
Автор
T

Tapok

Новичок
Сообщения
204
Репутация
0
Garrett сказал(а):
P.S. Как сделать, чтобы вы начали читать справку? :smile:

Справку читаю регулярно, практически на ночь :smile:

Ваш код не работает. Сохраняет с иероглифами в кодировке dos/windows UTF-8 w/o BOM.

Лечится кодированием в ANSI и преобразованием в UTF-8, но это же не выход (в Notepad++).
 

MaximK

Знающий
Сообщения
33
Репутация
5
FileWrite сохраняет по умолчанию в ASCII. Далее читаем справку. :IL_AutoIt_1:
 
Автор
T

Tapok

Новичок
Сообщения
204
Репутация
0
MaximK сказал(а):
FileWrite сохраняет по умолчанию в ASCII. Далее читаем справку. :IL_AutoIt_1:

Во первых, не ASCII, а ANSI... читаем справку...
Код:
При записи текста AutoIt'ом по умолчанию используется ANSI. Для записи в режиме Unicode файл должен быть открыт функцией FileOpen() с соответствующими флагами.
Во вторых, если настолько все ясно и просто, чем отсылать к справке, может просто строчку кода написали бы, решающую вопрос?!
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
FileWrite(@ScriptDir & '\new\new_' & $FileList[$i], BinaryToString(StringToBinary($output, 4)))
 

MaximK

Знающий
Сообщения
33
Репутация
5
Да путаю поймали
Держи
Код:
#include <File.au3>
#include <Array.au3>

Local $file_Read[0], $name_file_0[0]

$FileList =_FileListToArray(@ScriptDir, "*.html", 0)
DirCreate(@ScriptDir & '\new')

FileDelete(@ScriptDir & '\new\*.html')

for $i=1 to $FileList[0] Step 1
    $hFile = FileOpen(@ScriptDir & '\' & $FileList[$i], 256)
    If $hFile = -1 Then
        MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
        Exit
    EndIf
    $f = FileRead($hFile)
    _ArrayAdd($file_Read,$f)
    $f_wo_html = StringRegExp($FileList[$i],'(.+).html',3)
    _ArrayAdd($name_file_0,$f_wo_html)
    $name_file = '<title>' & $name_file_0[$i-1] & '</title>'
    $pattern = '<title>(.+)</title>'
    $output = StringRegExpReplace($f,$pattern,$name_file)
	$hand = FileOpen(@ScriptDir & '\new\new_' & $FileList[$i],2+256)
    FileWrite($hand, $output)
	FileClose($hand)
Next
 
Автор
T

Tapok

Новичок
Сообщения
204
Репутация
0
Garrett, спасибо, работает!
MaximK, спасибо, работает!
:smile:
 
Верх