Russian Qt Forum
Сентябрь 21, 2024, 16:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как правильно сохранить данные в XML  (Прочитано 5001 раз)
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>

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

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Август 05, 2010, 00:01 »

Точно не знаю, но не зависит ли это от кодировки файла исходника? Если например в винде пишешь, то по умолчанию кодировка .cpp CP-1251.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
SASA
Гость
« Ответ #2 : Август 05, 2010, 12:17 »

слово "мастер" оберните tr
tr("мастер").
А в мейне укажите кодировку для tr. SetCodecForTr, кажется. Нужно указать кодировку исходников.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.123 секунд. Запросов: 22.