当前位置: 代码迷 >> QT开发 >> Qt在txt资料中写入中文
  详细解决方案

Qt在txt资料中写入中文

热度:96   发布时间:2016-04-25 04:35:57.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换行呢?
  相关解决方案