• 5417阅读
  • 2回复

[提问]从一个XML文件中读中文写入另一个XML文件如何解决乱码问题? [复制链接]

上一主题 下一主题
离线hxm9065
 
只看楼主 倒序阅读 楼主  发表于: 2011-10-31
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
从一个XML文件中读中文写入另一个XML文件如何解决乱码问题?代码如下,谢谢大家
void MainWindow::on_pushButton_clicked(bool)
{QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
    QFile file1("C:/result.xml");
    QString line;
    QTextCodec *code=QTextCodec::codecForName("GBK");
    file1.open(IO_ReadWrite);
    QTextStream stream(&file1);
    stream.setCodec(code);
    QFile file("C:/Users/huxiameng/Desktop/shuju.xml");
    if (!file.open(QFile::ReadOnly|QFile::Text)) return ;
    QDomDocument doc;
    if (!doc.setContent(&file))
    {
    file.close();
    return ;
    }
    file.close();
    //返回根节点及其子节点的元素标记名
QDomElement docElem = doc.documentElement();  //返回根元素
  QDomNode n = docElem.firstChild();   //返回根节点的第一个子节点
QDomElement e = n.toElement(); //将其转换为元素
         QDomNodeList list = e.childNodes();
           QDomNode node = list.at(0);
      QString city=node.toElement().text().toLocal8Bit();
            node = list.at(2);
      QString lat=node.toElement().text();
      node = list.at(3);
QString loc=node.toElement().text();
node = list.at(4);
QString lon=node.toElement().text();
node = list.at(5);
QString pro=node.toElement().text().toLocal8Bit();
stream<<city<<lat<<loc<<lon<<pro;
}

离线dbzhang800

只看该作者 1楼 发表于: 2011-10-31
先找找资料,了解点编解码的知识吧。这段代码给人的感觉是:完全在胡乱尝试
离线roywillow

只看该作者 2楼 发表于: 2011-10-31
因为xml中记录了编码方式,所以那个toLocal8Bit是什么意思呢……text()应该直接就能得到QString了,只要xml中的编码能对应上
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个