Показать полную графическую версию : [решено] Записать в заголовок файла BOM
Привет.
Как мне записать файл в UTF-8 кодировке с BOM
Упорно пишет без BOMа.
FileWrite('C:\111.txt', '1111')
Упорно пишет без BOMа. »
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.
$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)
При этом мы складываем одну и другую константы:
$FO_OVERWRITE + $FO_UTF8 »
для получения соответствующего эффекта (вообще-то, правильнее будет сказать — формируем битовую маску флагов из значений констант, делается она логической операцией OR, но в данном случае константы таковы, что у каждой из них ровно одна цифра единички в двоичном представлении, посему вполне допустимо и банальное арифметическое сложение вместо логической операции).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.