当前位置: 代码迷 >> QT开发 >> Qt在txt文件中写入中文,该怎么处理
  详细解决方案

Qt在txt文件中写入中文,该怎么处理

热度:59   发布时间:2016-04-25 03:09:54.0
Qt在txt文件中写入中文
如题,想实现一个系统日志的记录,但是在写入中文时,在windows下打开txt文件却显示乱码?而且换行也不起作用,谁能指点一下呀?

------解决思路----------------------
是编码的问题,qt creater默认是系统编码,决大多数机器应是GBK。
所以你编译的程序文件里就是以内码保存的字符串,而meego什么的是以Unicode为内码的,错误大概就是这样生成的。太详细了我也没细研究。不过我有解决方法,就是用UTF-8保存。


首先要在main中加入
   //设置编码器
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));

再建一下测试函数试试下面的

    //此时为GBK编码 ,win7的内码
    QString str="转换";
    char* cTmp=str.toLatin1().data();//内存编辑器内查看,此时为GBK编码

    //此时转化为unicode
    QString string= QObject::tr(str.toLatin1().data());
    QChar * tmpc=string.data();//内存编辑器内查看


    //此时转换为UTF-8
    QByteArray byte=QTextCodec::codecForName("UTF-8")->fromUnicode(string);

    //如需要此时写入文件即可,
    file.write(byte);

总之不想看到乱码就要用Unicode,而UTF-8是最流行的编码方式。



------解决思路----------------------
引用:
谢谢楼上,确实是编码的问题,现在可以显示中文了,但是为什么每次写入都是从文本的首部开始呢?后面写入的都会覆盖前面的?
main里面添加:
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));

请问怎么实现txt换行呢?

因为你使用了只写的方式,只写的方式写入 , 没有文件会创建文件,有文件,则覆盖。 你的应该选中追加的方式,QFile::Append 打开文件的时候用这种方式打开。
  相关解决方案