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

相关推荐
DARLING Zero two♡17 分钟前
关于我、重生到500年前凭借C语言改变世界科技vlog.16——万字详解指针概念及技巧
c语言·开发语言·科技
7年老菜鸡18 分钟前
策略模式(C++)三分钟读懂
c++·qt·策略模式
Gu Gu Study19 分钟前
【用Java学习数据结构系列】泛型上界与通配符上界
java·开发语言
Ni-Guvara26 分钟前
函数对象笔记
c++·算法
似霰31 分钟前
安卓智能指针sp、wp、RefBase浅析
android·c++·binder
芊寻(嵌入式)41 分钟前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
獨枭43 分钟前
C++ 项目中使用 .dll 和 .def 文件的操作指南
c++
霁月风1 小时前
设计模式——观察者模式
c++·观察者模式·设计模式
橘色的喵1 小时前
C++编程:避免因编译优化引发的多线程死锁问题
c++·多线程·memory·死锁·内存屏障·内存栅栏·memory barrier
一颗松鼠1 小时前
JavaScript 闭包是什么?简单到看完就理解!
开发语言·前端·javascript·ecmascript