windows下Qt 生成Unicode编码xml

来源:互联网 发布:网络说唱歌曲大全 编辑:程序博客网 时间:2024/06/10 17:47
/**
* by songhongyu on 2019-09-16大笑
*/
<main.cpp>
#include "mainwindow.h"
#include <QApplication>
#include <QTextCodec>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextCodec *codec = QTextCodec::codecForName("system");
    QTextCodec::setCodecForTr(codec);
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    MainWindow w;
    w.show();
    return a.exec();
}
<mainWindows.h>
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    void func1();
    void func2();
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
<mainWindows.cpp>
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDomDocument>
#include <QFile>
#include <QDomElement>
#include <QDomComment>
#include <QString>
#include <QFileDialog>
#include <QTextStream>
#include <QTextCodec>
#include <QDataStream>
#include "fstream"
#include "Windows.h"
#include <iostream>
#include <fstream>
#include <set>
#include <sstream>
#include <QMessageBox>
using namespace std;
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    func2();
    func1();
}
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::func1()
{
    QString szFilename = "Test.xml";
    QFile file( szFilename );
    if( !file.open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Append) )
    {
        return;
    }
    QTextStream out(&file);
    QDomDocument document;
    //QString strHeader( "version=\"1.0\" encoding=\"UTF-16LE\"" );
    //document.appendChild( document.createProcessingInstruction("xml", strHeader) );
    QDomElement root_elem = document.createElement( "items" );
    //QTextCodec *codec = QTextCodec::codecForCStrings();
    QString szTest = "哈喽";
    ui->pushButton->setText(szTest);
    ui->pushButton_2->setText("哈哈");
    root_elem.setAttribute( ui->pushButton->text(), 1 );
    root_elem.setAttribute(ui->pushButton_2->text(), 1 );
    document.appendChild( root_elem );
    out.setCodec("UTF-16LE");
    document.save(out, 4, QDomNode::EncodingFromTextStream);
    file.close();
}
void MainWindow::func2()
{
    ofstream out("Test.xml");
    unsigned char head[3] = {0xff,0xfe,0x00};//unicode文件头,0x00必须加上
    out << head;
    out.close();
}