📢问题描述
本方案开发环境为VS2015+QT5环境(编译器是VC)。VS2015默认编码格式为 “GB2312”,很多时候可能出现乱码情况(中文路径或名称、有时候别的文件拖进来也会出现乱码)。例如:写一个QString S=“文件路径”,文件路径中包含中文时使用代码Srting s= S.toStdString();将QString格式转为String格式,调试时发现s里面存放的中文字符全部变成了乱码,这是由于编码方式不一致导致的。
🌟解决方案
1、 QT默认的编码是Unicode,不能显示中文的Windows默认使用(GBK/GB2312/GB18030),使用fromLocal8Bit()函数,实现了从本地字符集GB到Unicode的转换,解决中文乱码。
QMessageBox::about(this,QString::fromLocal8Bit("关于"), QString::fromLocal8Bit("中文显示"));
或者Qt5中,提供了一个专门的处理宏,来支持中文常量,那就是QStringLiteral,但它只能处理常量。
QMessageBox::information(this, QString::fromLocal8Bit("关于"), QStringLiteral("中文显示"));
const char* info = "中文显示";
//不支持
QString strInfo = QStringLiteral(info);
//支持
QString strInfo = QString::fromLocal8Bit(info);
对于中文常量,使用QStringLiteral即可解决,对于字符串变量,使用QString自带函数也可以轻松解决。
2、将VS2015默认编码格式“GB2312”更改为UTF-8
方法一:文件—高级选项—将编码格式“GB2312”更改为UTF-8
但是这个方法只能修改一个文件的编码格式,下面方法可以将项目的所有文件编码格式全部修改(推荐)。
方法二:工具—扩展和更新—联机—搜索插件“ForceUTF8”,有两个,选择 (with BOM)的并安装,以后VS编码格式默认是utf-8。
方法三:将VS2015安装路径的如下目录中的newc++file.cpp文件加上:
#pragma execution_character_set("utf-8")
// 本文件为utf-8 编码格式
这样,创建新的cpp时会自动修改文件中的编码格式。
戳戳小手帮忙点个免费的赞和关注吧,嘿嘿。 |