QXmlStreamWriter and cyrillic

QXmlStreamWriter and cyrillic

本文关键字:cyrillic and QXmlStreamWriter      更新时间:2023-10-16

在windows中通过QXmlStreamWriter编写XML文件时,我有编码问题,我该如何解决?使用stream.setCodec("UTF-8")或"windows-1251"没有帮助。

QFile *file = new QFile(filename);
if (file->open(QIODevice::WriteOnly | QIODevice::Text))
         {
         QXmlStreamWriter stream(file);
         stream.setAutoFormatting(true);
         stream.writeStartDocument();
         stream.writeStartElement("СЕКЦИЯ"); // start root section
            stream.writeStartElement("FIELD");
            stream.writeAttribute("name", "Имя");
            stream.writeAttribute("value", "Иван");
            stream.writeEndElement();
         stream.writeEndElement(); // END СЕКЦИЯ
         file->close();
}

最有可能的问题是源文件中字符串文字的解释,而不是流写入器的配置。确保源文件是UTF-8编码,并使用QString::fromUtf8("Imja")等(Imja当然是西斯拉夫字母),而不是隐式的文字到QString的转换。