Qt+Vs踩坑之QString转std::string中文乱码

文章目录

Qt中字符串存在两种中文乱码的情况:1.Qt内部的编码造成的中文乱码;2.QString与std::string之间转换造成的中文乱码。

1.Qt内部的编码造成的中文乱码

这种情况可以在文件中添加如下语句:

cpp 复制代码
#pragma execution_character_set("utf-8")

或者在代码中使用如下格式:

cpp 复制代码
QString::fromLocal8Bit("中文");

2.QString与std::string之间转换造成的中文乱码

cpp 复制代码
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 *

cpp 复制代码
QString path ;
const char *c_str = path.toUtf8().constData()  //因为QT默认是Utf8

(2)char * 转换成 QString

c 复制代码
  char *c_str = "123456789";
  QString string = QString(QLatin1String(c_str));

(3)QString转string

cpp 复制代码
QString  file_name1;
std::string a = file_name1.toStdString();

4.参考文献

QT中出现的中文乱码问题及其解决方案
Qt开发中文显示乱码
https://blog.csdn.net/qq_35007834/article/details/88658500

相关推荐
半桶水专家12 小时前
go语言中的结构体嵌入详解
开发语言·后端·golang
在屏幕前出油13 小时前
二、Python面向对象编程基础——理解self
开发语言·python
粉红色回忆13 小时前
用链表实现了简单版本的malloc/free函数
数据结构·c++
阿方索13 小时前
python文件与数据格式化
开发语言·python
写代码的小球14 小时前
C++计算器(学生版)
c++·算法
k***921615 小时前
【C++】继承和多态扩展学习
java·c++·学习
weixin_4407305015 小时前
java结构语句学习
java·开发语言·学习
JIngJaneIL15 小时前
基于java+ vue医院管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
量子联盟15 小时前
功能完整的PHP站点导航管理系统php程序;开源免费下载
开发语言·php
仙俊红15 小时前
在 Java 中,`==` 和 `equals()` 的区别
java·开发语言·jvm