Название: Как правильно сохранить данные в 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, кажется. Нужно указать кодировку исходников.
|