qt中乱码的一种解决思路

    Qt中的乱码大都可以通过设置Locale和CString的字符集来解决,也即以下两个函数:

    

void setCodecForCStrings ( QTextCodec * codec )
void setCodecForLocale ( QTextCodec * c )
    setCodecForCString设置原始char*数据的编码方式,使用此字符集对原始二进制数据进行解码得到Unicode QString。

    setCodecForLocale设置将Unicode编码转换为何种字符集。

    如果不知道该用哪种字符集,可以通过逐一试探的方式。

    比如不确定CString的编码方式,可以通过以下代码来试探:

	char * ss = "我是汉字";

	QList<QByteArray> codecs = QTextCodec::availableCodecs();
	for(int i = 0; i < codecs.size(); i ++)
	{
		QTextCodec* cd = QTextCodec::codecForName(codecs.at(i));
		QString s = cd->toUnicode(ss);
		qDebug()<<s<<"   "<<cd->name()<<endl;
	}
    观察输出,能使输出为正确汉字的字符集即为结果字符集。

你可能感兴趣的:(qt中乱码的一种解决思路)