如题,想实现一个系统日志的记录,但是在写入中文时,在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是最流行的编码方式。
------解决方案--------------------