麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Qt實(shí)現(xiàn)的gbk/utf8無bom文本轉(zhuǎn)碼小工具

2019-11-11 07:29:03
字體:
供稿:網(wǎng)友

1、用到了QDir QDirIterator遞歸文件目錄

2、QTextStream以某種編碼格式讀取文本保存到QString,然后以另一種編碼格式保存文本

3、界面很簡(jiǎn)單,如下:

#include "widget.h"#include "ui_widget.h"#include <QFile>#include <QFileInfo>#include <QTextCodec>#include <QTextStream>#include <QDir>#include <QDirIterator>#include <QFileDialog>Widget::Widget(QWidget *parent) :QWidget(parent),    ui(new Ui::Widget){    ui->setupUi(this);    // 添加編碼    QStringList items;    items << "UTF-8"<<"GBK";    ui->comboBoxCodecSource->clear();    ui->comboBoxCodecDest->clear();    ui->comboBoxCodecSource->addItems(items);    ui->comboBoxCodecSource->setCurrentText("GBK");    ui->comboBoxCodecDest->addItems(items);    ui->comboBoxCodecDest->setCurrentText("UTF-8");    m_strTrPath = "";//目錄路徑}Widget::~Widget(){    delete ui;}void Widget::on_btnPRoject_clicked(){    static QString strDir = "d:/";//初始目錄    strDir = QFileDialog::getExistingDirectory(this, tr("選擇目錄"),                                               strDir,                                               QFileDialog::ShowDirsOnly |                                               QFileDialog::DontResolveSymlinks);    // 選擇工程目錄    if (!strDir.isEmpty())    {        m_strTrPath = strDir;        ui->labelStatus->setText(QString("選擇目錄[%1]").arg(strDir));    }    else        strDir = "d:/";}void Widget::on_btnChange_clicked()//點(diǎn)擊開始轉(zhuǎn)換按鈕{    QDir dir (m_strTrPath);    QDirIterator dirIterator(m_strTrPath,                             QDir::AllDirs | QDir::NoSymLinks | QDir::NoDotAndDotDot,                             QDirIterator::Subdirectories);    ui->textBrowser->clear();   do  {        QStringList filters;        filters << "*.pro" << "*.cpp" << "*.h";        dir.setPath(m_strTrPath);        ui->textBrowser->append(QString("<span style=/" color:#FF0000;/">進(jìn)入目錄:</span> [ %1 ] <br>").arg(m_strTrPath));        // 轉(zhuǎn)換文件        foreach (QFileInfo fileInfo, dir.entryInfoList(filters))            changeTextcodec(fileInfo.absoluteFilePath()); // 轉(zhuǎn)換編碼    } while (dirIterator.hasNext()&&(m_strTrPath = dirIterator.next())!="");}void Widget::changeTextcodec(QString fileName)//改變文本編碼的關(guān)鍵代碼,fileName是帶路徑的文件名{    QFile fileRead(fileName);    fileRead.open(QIODevice::ReadOnly);    QTextStream out(&fileRead);    //這一句需要知道文本當(dāng)前的編碼格式    out.setCodec(QTextCodec::codecForName(ui->comboBoxCodecSource->currentText().toLatin1()));    out.setAutoDetectUnicode(true);    QString strTemp;    QStringList strContents;    while (!out.atEnd()) {        strTemp = out.readLine();        strContents << strTemp;    }    fileRead.close();    QFile fielWrite(fileName);    if (!fielWrite.open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Truncate)) {        ui->labelStatus->setText("文件打開失敗!");        return;    }    QTextStream in(&fielWrite);    in.setCodec(QTextCodec::codecForName(ui->comboBoxCodecDest->currentText().toLatin1()));    in.setAutoDetectUnicode(true);    for (int i = 0; i < strContents.size(); i++)        in << strContents.at(i) << endl;    fielWrite.close();    ui->textBrowser->append(QString("<span style=/" color:#0000FF;/">轉(zhuǎn)換完成:</span> [ %1 ] <br>").arg(fileName));}代碼下載地址:http://download.csdn.net/detail/bladeandmaster88/9747442


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 蜜桃视频在线免费播放 | 天海翼无删减av三级在线观看 | 国产午夜小视频 | 原来神马影院手机版免费 | 午夜伦情电午夜伦情电影 | 国产精品久久久久久久av三级 | 真人一级毛片免费 | 午夜精品久久久久久久久久久久久蜜桃 | 99国产精品白浆在线观看免费 | 国产二区三区在线播放 | 久久久成人999亚洲区美女 | 狼人狠狠干 | 毛片免费观看日本中文 | 久久亚洲精品久久国产一区二区 | 国产精品久久久久久模特 | 日韩av成人 | 欧美一级小视频 | 亚洲综合精品 | 国产成人精品午夜视频' | 91精品动漫在线观看 | 国产九色在线播放九色 | 国产精品久久久久久久久久东京 | 91成人一区二区三区 | 国产三级在线观看a | xxnxx中国18| 999久久久| 成人精品久久久 | 国产91精品欧美 | 天天草天天干天天 | 黄色网址免费在线播放 | 爱性久久久久久久 | 91 成人| 九九热在线视频观看 | www亚洲成人 | 国产69精品福利视频 | 日韩毛片网站 | www.91sese| 一级毛片在线免费播放 | xxx18hd18hd日本| 看片一区二区三区 | 久久精品日韩一区 |