文章目录
- 1.Qt内部的编码造成的中文乱码
- 2.QString与std::string之间转换造成的中文乱码
- 3.QString、string、char*之间的转换
- 4.参考文献
Qt中字符串存在两种中文乱码的情况:1.Qt内部的编码造成的中文乱码;2.QString与std::string之间转换造成的中文乱码。
1.Qt内部的编码造成的中文乱码
这种情况可以在文件中添加如下语句:
#pragma execution_character_set("utf-8")
或者在代码中使用如下格式:
QString::fromLocal8Bit("中文");
2.QString与std::string之间转换造成的中文乱码
QString str2qstr(const string str)
{ return QString::fromLocal8Bit(str.data());
} string qstr2str(const QString qstr)
{ QByteArray cdata = qstr.toLocal8Bit(); return string(cdata);
}
3.QString、string、char*之间的转换
在无中文的情况下,使用以下方式转换是没问题的
(1)QString 转换成 char *
QString path ;
const char *c_str = path.toUtf8().constData() //因为QT默认是Utf8
(2)char * 转换成 QString
char *c_str = "123456789";QString string = QString(QLatin1String(c_str));
(3)QString转string
QString file_name1;
std::string a = file_name1.toStdString();
4.参考文献
QT中出现的中文乱码问题及其解决方案
Qt开发中文显示乱码
https://blog.csdn.net/qq_35007834/article/details/88658500