c++ - 如何在 Qt 中设置 XML 文件的编码?
问题描述
我在 Qt 中编写了一个 XML 文件:
QString fname = "L.xml";
QFile file(fname);
if (file.open(QIODevice::WriteOnly)) {
QTextStream streamFileOut(&file);
streamFileOut.setCodec("Windows-1251");
QString string;
QXmlStreamWriter xmlWriter(&string);
xmlWriter.setAutoFormatting(true);
xmlWriter.writeStartDocument();
xmlWriter.writeStartElement("LIST");
xmlWriter.writeStartElement("V");
xmlWriter.writeCharacters("Привет");
xmlWriter.writeEndElement();
xmlWriter.writeStartElement("S");
xmlWriter.writeCharacters("Привет");
xmlWriter.writeEndElement();
xmlWriter.writeEndElement();
xmlWriter.writeEndDocument();
streamFileOut << string;
streamFileOut.flush();
file.close();
}
我得到以下 XML:
<?xml version="1.0"?>
<LIST>
<V>Привет</V>
<S>Привет</S>
</LIST>
我需要获取 XML:
<?xml version="1.0" encoding="windows-1251" ?>
<LIST>
<V>Привет</V>
<S>Привет</S>
</LIST>
在我的 XML 中没有encoding = "windows-1251"。如何解决这个问题?
解决方案
使用QXmlStreamWriter::setCodec(),但您不能流式传输到 aQString
并且仍然保留 encoding 属性,如文档所述。直接进入一个文件,它的工作原理:
#include <QFile>
#include <QXmlStreamWriter>
#include <QString>
int main()
{
auto file = QFile{ "L.xml" };
if (file.open(QIODevice::WriteOnly))
{
auto xmlWriter = QXmlStreamWriter{ &file };
xmlWriter.setAutoFormatting(true);
xmlWriter.setCodec("windows-1251");
xmlWriter.writeStartDocument();
{
xmlWriter.writeStartElement("LIST");
{
xmlWriter.writeStartElement("V");
{
xmlWriter.writeCharacters(u8"Привет");
}
xmlWriter.writeEndElement();
xmlWriter.writeStartElement("S");
{
xmlWriter.writeCharacters(u8"Привет");
}
xmlWriter.writeEndElement();
}
xmlWriter.writeEndElement();
}
xmlWriter.writeEndDocument();
}
}
产量:
<?xml version="1.0" encoding="windows-1251"?>
<LIST>
<V>Привет</V>
<S>Привет</S>
</LIST>
推荐阅读
- java - 绑定添加到列表时的一般误解
- git - 每次打开项目时都需要提交相同的文件
- process - 进程和常规函数调用之间的区别?
- javascript - 我的 Babel 配置有什么问题?
- java - 多个片段可以共享一个 XML 布局吗
- python - 如何在机器学习模型中使用 test_proportion 数据?
- php - 如何在 php 中使用 date() 显示日期和时间
- node.js - 在 Nodejs 上下文中,为什么“不要阻塞事件循环”这句话即使在开发中也存在,它无法避免?
- java - 随机词生成器,我想限制它从 .txt 文件中读取的词的大小,最多说 3 个字符
- javascript - 缩小谷歌地图故障