Russian Qt Forum

Qt => XML => Тема начата: SMA1971 от Август 04, 2010, 20:09



Название: Как правильно сохранить данные в XML
Отправлено: SMA1971 от Август 04, 2010, 20:09
Вот код:

Код:
    QString fileName = QFileDialog::getSaveFileName(this, tr("Save project as"), QDir::homePath(),
        tr("Program project (*.xml)"));

    if (fileName.isEmpty() == false)
    {
        if (fileName.endsWith(".xml", Qt::CaseInsensitive) == false)
            fileName += ".xml";

        // размер отступа
        const int Indent = 4;

        QDomDocument doc;

        QDomElement dswsoftElement = doc.createElement("root");
        doc.appendChild(dswsoftElement);
        QDomElement sqlbalanceElement = doc.createElement("Program");
        dswsoftElement.appendChild(sqlbalanceElement);
        QDomElement mainElement = doc.createElement("Main");
        sqlbalanceElement.appendChild(mainElement);


        QDomElement masterDbElement = doc.createElement("MasterDatabase");
        mainElement.appendChild(masterDbElement);
        QDomText masterDbText = doc.createTextNode("мастер");
        masterDbElement.appendChild(masterDbText);

        QDomNode xmlNode = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"");
        doc.insertBefore(xmlNode, doc.firstChild());

        QFile file(fileName);
        file.open(QIODevice::WriteOnly);

        QTextStream out(&file);
        out.setCodec(QTextCodec::codecForName("UTF-8"));

        doc.save(out, 5, QDomNode::EncodingFromTextStream);
    }


Вот результат:

Цитировать
<?xml version="1.0" encoding="UTF-8"?>
<root>
     <Program>
          <Main>
               <MasterDatabase>мастер</MasterDatabase>
          </Main>
     </Program>
</root>

Вопрос:
Как правильно сделать, что бы вместо "мастер" было сохранено "мастер"?


Название: Re: Как правильно сохранить данные в XML
Отправлено: kibsoft от Август 05, 2010, 00:01
Точно не знаю, но не зависит ли это от кодировки файла исходника? Если например в винде пишешь, то по умолчанию кодировка .cpp CP-1251.


Название: Re: Как правильно сохранить данные в XML
Отправлено: SASA от Август 05, 2010, 12:17
слово "мастер" оберните tr
tr("мастер").
А в мейне укажите кодировку для tr. SetCodecForTr, кажется. Нужно указать кодировку исходников.