Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Записать в заголовок файла BOM

Ответить
Настройки темы
[решено] Записать в заголовок файла BOM

Аватара для Паразит

Пользователь


Сообщения: 68
Благодарности: 0

Профиль | Отправить PM | Цитировать


Привет.
Как мне записать файл в UTF-8 кодировке с BOM
Упорно пишет без BOMа.

Код: Выделить весь код
FileWrite('C:\111.txt', '1111')

Отправлено: 15:27, 25-05-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Паразит:
Упорно пишет без BOMа. »
Цитата FileWrite:
When writing text AutoIt will write using UTF8 (without BOM) by default. To write in another mode the file must be and the relevant flags.
Цитата FileOpen():
$FO_UTF8 (128) = Use Unicode UTF8 (with BOM) reading and writing mode.
Перевод нужен?

Отправлено: 16:53, 25-05-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Паразит

Пользователь


Сообщения: 68
Благодарности: 0

Профиль | Отправить PM | Цитировать


Перевод не нужен, а нужен пример рабочего скрипта.

Отправлено: 16:58, 25-05-2017 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Держите пример:
Скрытый текст
Код: Выделить весь код
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>

Local $sSourceFile = "Sample.txt"
Local $hSourceFile = FileOpen($sSourceFile, $FO_OVERWRITE + $FO_UTF8)

If $hSourceFile = -1 Then
	MsgBox($MB_SYSTEMMODAL, "Error", "Can't open source file [" & $sSourceFile & "].")
	Exit(1)
EndIf

FileWrite($hSourceFile, "Мама ")
FileWrite($hSourceFile, "мыла ")
FileWrite($hSourceFile, "раму." & @CRLF)

FileClose($hSourceFile)

Exit(0)
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:29, 25-05-2017 | #4


Аватара для Паразит

Пользователь


Сообщения: 68
Благодарности: 0

Профиль | Отправить PM | Цитировать


А я 128 ставлю. Оказывается надо делать 130.

Iska, спасибо.

Отправлено: 06:14, 26-05-2017 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Паразит, всё правильно. $FO_UTF8 — это и есть 128. Этого достаточно для чтения из файла в UTF-8 с BOM (поскольку константа $FO_READ равна нулю). А вот для дозаписи или записи нужно указать соответствующую константу:
Цитата:
$FO_APPEND (1) = Write mode (append to end of file)
$FO_OVERWRITE (2) = Write mode (erase previous contents)
При этом мы складываем одну и другую константы:
Цитата Iska:
$FO_OVERWRITE + $FO_UTF8 »
для получения соответствующего эффекта (вообще-то, правильнее будет сказать — формируем битовую маску флагов из значений констант, делается она логической операцией OR, но в данном случае константы таковы, что у каждой из них ровно одна цифра единички в двоичном представлении, посему вполне допустимо и банальное арифметическое сложение вместо логической операции).
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:33, 26-05-2017 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Записать в заголовок файла BOM

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Чем записать перевод youtube файла pavsem7 Хочу все знать 3 18-02-2016 16:26
CMD/BAT - записать в txt файл только часть имени файла. Spacejet Скриптовые языки администрирования Windows 2 20-10-2014 18:18
CMD/BAT - [решено] Вставить имя файла в текстовый файл (UTF-8 without BOM) Jahnhoy Скриптовые языки администрирования Windows 11 19-09-2011 17:39
Как записать с начала файла??(php) LEXX2002 Программирование и базы данных 4 01-05-2003 05:29




 
Переход