-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Записать в заголовок файла BOM
Привет.
Как мне записать файл в UTF-8 кодировке с BOM
Упорно пишет без BOMа.
Код:
FileWrite('C:\111.txt', '1111')
|
Цитата:
Цитата 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.
|
Перевод нужен?
|
Перевод не нужен, а нужен пример рабочего скрипта.
|
Держите пример:
Скрытый текст
Код:
#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)
|
А я 128 ставлю. Оказывается надо делать 130.
Iska, спасибо.
|
Паразит, всё правильно. $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, но в данном случае константы таковы, что у каждой из них ровно одна цифра единички в двоичном представлении, посему вполне допустимо и банальное арифметическое сложение вместо логической операции).
|
Время: 20:01.
© OSzone.net 2001-