![QT中QString与string的转化,解决中文乱码问题 QT中QString与string的转化,解决中文乱码问题](https://image.shishitao.com:8440/aHR0cHM6Ly9ia3FzaW1nLmlrYWZhbi5jb20vdXBsb2FkL2NoYXRncHQtcy5wbmc%2FIQ%3D%3D.png?!?w=700&webp=1)
在QT中,使用QString输出到控件进行显示时,经常会出现中文乱码,网上查了一圈,发现大部分都是针对QT4增加4条语句:</span>
[cpp] view plain copy
QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec); 我使用的是QT5,已经不支持如此设置了,而且这样设置也会存在很多问题。 其实,还有更简单的方法,就是使用我写的如下两个函数: [cpp] view plain copy
QString str2qstr(const string str)
{
return QString::fromLocal8Bit(str.data());
} string qstr2str(const QString qstr)
{
QByteArray cdata = qstr.toLocal8Bit();
return string(cdata);
} 在需要使用中文QString时,先用string写一个,然后转过去就可以啦,例如: [cpp] view plain copy
qlabel->setText(QString(str2qstr(string("支持中文"))));