各位大大,小弟初学Qt,最近突发奇想自己做了一个把utf8编码格式的txt文件转换为ansi(windows下应该是GBK编码吧)编码格式的程序。于是翻出了一个老坟,是XChinux大大很多年前写的关于编码转换的简便方法(貌似)。。。我程序里的函数采用的就是XChinux的方法。
我的代码如下:
里面it是一个QStringList的指针,这个list里是多个待转换文件的绝对路径
QString inputText, outputText;
QFile inFile(static_cast<QString>(*it)); //指针指向的绝对路径
if (!inFile.open(QIODevice::ReadOnly | QIODevice::Text)) //判断操作合法性
return;
QTextStream in(&inFile); //文件输入流
inputText = in.readAll(); //转换文件编码
outputText = Utf8_To_GB(inputText);
QFileInfo fi(*it); //获得原始文件名
QTextStream(&outDir) << dir << "\\" << fi.fileName(); //生成输出路径
QFile outFile(outDir);
if (!outFile.open(QIODevice::WriteOnly | QIODevice::Text)) //判断操作合法性
return;
QTextStream out(&outFile); //文件输出流
out << outputText;
因为我的输入文件是utf8无bom格式的,所以我输入时没有进行编码转换,只在输出时进行了编码转换
现在的问题是转换出来的文档大部分都是正确的,但有些地方会出现丢字的现象。。。
我用一小段文本举例如下:
转换前:
文件发布时间:2010-7-14 5:25:18
更多内容敬请关注SF轻小说(http://book.sky-fire.com)
小说名称:灼眼的夏娜
本卷名称:第一卷
序章
那一天
转换后:
文件发布时间:2010-7-14 5:25:18
更多内容敬请关注SF轻小http://book.sky-fire.com)
小说名称:灼眼的夏娜
本卷名称:第
序章
那一
后面正文段中也有类似的丢字情况,而且每行前面的制表符也没有了,希望知道问题出在哪了,多谢各位了~