Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Проблемы с сохранением xml


Автор: multik 31.7.2009, 10:16
создается вот такой xml файл
Код

<?xml version="1.0" encoding="UTF-16" ?>
<LingvoXML version="1" >
    <dictionary indexLanguage="English" contentLanguage="Russian" numeratorDictionary="LatinNumeration" >
        <dictionaryName><![CDATA[EBRD Glossary of Project Finance]]></dictionaryName>         
        <entry>
            <heading>
                <vocable isPrimary="true" >
                    <part>
                        <simple>Aaa ratingпривет</simple>
                    </part>
                </vocable>
            </heading>
            <content>
                <homonym>
                    <translation>
                        <far>
                            <near>
                                <simple>высший рейтинг</simple>
                            </near>
                            <near>
                                <simple>  рейтинг Ааа </simple>
                            </near>
                        </far>
                    </translation>
                </homonym>
            </content>
        </entry>
......


сохраняю вот так
Код

QTextStream out(device);
domDocument.save(out, IndentSize);


проблема в том что он не открывается в explorer и пишет, что "Переключение с текущей кодировки на указанную не поддерживается." А в visual studio вообще квадратики((((. 
Можно просмотреть его с помощью обычного блокнота.

Но если здесь <?xml version="1.0" encoding="UTF-16" ?> будет указана кодировка utf-8 или файл ручками написать, а потом сохранить в блокноте , то все отлично везде открывается


Автор: Alexeis 31.7.2009, 10:22
может оно хочет BOM ?

Добавлено через 4 минуты и 5 секунд
Цитата(http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4)

Файлы в кодировках UTF-16 и UTF-32, не содержащие BOM, должны иметь порядок байтов big-endian

Автор: multik 31.7.2009, 10:27
пробовала вот так написать 
Код

QTextStream out(device);
out.setGenerateByteOrderMark(true);
domDocument.save(out,Ident);


но тоже открывать отказался

Автор: Alexeis 31.7.2009, 10:35
Я сохранил в блокноте в UTF-16LE c BOM FFFE
FireFox правильно открыл. Проверьте что получается реально при помощи WinHEX.

Добавлено через 3 минуты и 26 секунд
Или же приатачте файлик сюда. Могу я глянуть.

Автор: multik 31.7.2009, 10:38
спасибо, я разобралась.

Автор: Любитель 31.7.2009, 13:07
Так скажите - в чём была проблема, людям на будущее smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)