Re: пишутся лишние байты в fputsw
От: const_volatile  
Дата: 27.05.11 19:22
Оценка: 4 (1)
Здравствуйте, Lepsik, Вы писали:

L>xml редактор ругается на формат и исправляет — пр бинарном сравнении вижу лишние байты впереди файла: EF BB BF

L>как с этим бороться?

это BOM (byte order mark), индикатор unicode кодировки файла. по хорошему ваш редактор должен его понимать и интерпретировать, все-таки BOM довольно древнее соглашение. насколько я знаю, wfopen при выводе unicode-текста всегда пишет BOM, если файл открыт с явным указанием кодировки. альтернатива — конвертировать UTF-16 в UTF-8 вручную (WideCharToMultiByte).
Re: пишутся лишние байты в fputsw
От: uzhas Ниоткуда  
Дата: 27.05.11 18:53
Оценка: +1
Здравствуйте, Lepsik, Вы писали:

L>как с этим бороться?

настроить xml редактор. почему он что-то дописывает? это делать не обязательно
новые три символа называются BOM
http://www.opentag.com/xfaq_enc.htm#enc_bom
пишутся лишние байты в fputsw
От: Lepsik Индия figvam.ca
Дата: 27.05.11 18:45
Оценка:
пишу XML в файл так:


    FILE *pXmlFile = ::_wfopen( wzXmlFileName, L"w,ccs=UTF-8" );

    if( 0 == pXmlFile )
    {
        return false;
    }
    if( WEOF == ::fputws( L"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n", pXmlFile ) )
    {
        return false;
    }


xml редактор ругается на формат и исправляет — пр бинарном сравнении вижу лишние байты впереди файла: EF BB BF

как с этим бороться?

Re: пишутся лишние байты в fputsw
От: Lepsik Индия figvam.ca
Дата: 27.05.11 18:51
Оценка:
Здравствуйте, Lepsik, Вы писали:

L>пишу XML в файл так:


извиняюсь я баран — сам же написал UTF8
Re: пишутся лишние байты в fputsw
От: k.o. Россия  
Дата: 27.05.11 18:53
Оценка:
Здравствуйте, Lepsik, Вы писали:

L>xml редактор ругается на формат и исправляет — пр бинарном сравнении вижу лишние байты впереди файла: EF BB BF


L>как с этим бороться?


Эти "лишние" байты специальный маркер для Unicode файлов: Byte Order Mark. Если используется UTF-8 можно использовать обычный fopen (не wfopen), только строки нужно будет самому преобразовывать в UTF-8.
Re[2]: пишутся лишние байты в fputsw
От: uzhas Ниоткуда  
Дата: 27.05.11 21:20
Оценка:
Здравствуйте, const_volatile, Вы писали:

_>wfopen при выводе unicode-текста всегда пишет BOM, если файл открыт с явным указанием кодировки.

так значит вывод странный, а я подумал, что редактор что-то добавляет
виноват =\
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.