文章目录

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

精彩内容

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。