#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()//点击开始转换按钮
{
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;\">进入目录:</span> [ %1 ] <br>").arg(m_strTrPath));
// 转换文件
foreach (QFileInfo fileInfo, dir.entryInfoList(filters))
changeTextcodec(fileInfo.absoluteFilePath()); // 转换编码
} while (dirIterator.hasNext()&&(m_strTrPath = dirIterator.next())!="");
}
void Widget::changeTextcodec(QString fileName)//改变文本编码的关键代码,fileName是带路径的文件名
{
QFile fileRead(fileName);
fileRead.open(QIODevice::ReadOnly);
QTextStream out(&fileRead);
//这一句需要知道文本当前的编码格式
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;\">转换完成:</span> [ %1 ] <br>").arg(fileName));
}
没有合适的资源?快使用搜索试试~ 我知道了~
Qt实现的gbk/utf8无bom文本转码小工具
共9个文件
cpp:2个
user:1个
pro:1个
需积分: 35 27 下载量 164 浏览量
2017-02-05
15:44:08
上传
评论
收藏 255KB RAR 举报
温馨提示
1、Qt实现的gbk/utf8无bom文本转码小工具 2、用到了QDir QDirIterator 递归文件目录 3、QTextStream 以某种编码格式读取文本保存到QString,然后以另一种编码格式保存文本 代码比较简单。
资源推荐
资源详情
资源评论
收起资源包目录
Utf8ToGbk.rar (9个子文件)
Utf8ToGbk
app.ico 37KB
app.rc 37B
widget.ui 4KB
main.cpp 177B
Utf8ToGbk.pro.user 18KB
Utf8ToGbk.pro 445B
widget.cpp 3KB
widget.h 433B
bin
Utf8ToGbk.exe 943KB
共 9 条
- 1
资源评论
bladeandmaster88
- 粉丝: 84
- 资源: 36
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功