使用谷歌的glog有时候会遇到一些中文乱码问题,原因其实归结为以下几种:
1、中文字符串C++ string类型与QString类型的转换问题。
这个问题可以通过:toStdString()这个函数来进行转换:
例如
stirng str1;
QString str2 = str1.toStdString();
2、字符编码问题,比如之前是GB2312或者GBK编码,可以通过,.fromUtf8()。
3、如果字符串类型之前为char类型,可通过.c_str()来转换。
4、如果打印字符串为字符数组,可以通过.toLocal8Bit().data()来转换。例如:
QString str_error;
LOG(ERROR) <<str_error.toLocal8Bit().data();
中文字符串问题就是类型转换问题,遇到一个一个试试就试出来了。
注意:Qt 默认UTF-8编码,遇到中文乱码可使用:
#if _MSC_VER >= 1600
#pragma execution_character_set(“utf-8”)
#endif
但是这个宏不能与 QString::fromLocal8Bit(“中文字符串”), 同时存在,如果同时使用这两种方法,则还是会有乱码。
还有一些是因为显示乱码的文件格式有问题,Qt Creator中默认UTF-8BOM格式,如果是UTF-8格式转成BOM格式就可以了。