网站制作公司dedecms,好看的论坛源码,用python做的网站,中企动力做什么的目录 原因解决方案总结 原因
使用VSQt出现中文乱码的情况一般都是给控件添加中文文本时出现#xff0c;而控件需要的字符串类型是QString#xff0c;默认是utf-8。在 Visual Studio 中#xff0c;源代码文件的默认执行字符集可能是 Windows 默认的 ANSI 字符集#xff0c;… 目录 原因解决方案总结 原因
使用VSQt出现中文乱码的情况一般都是给控件添加中文文本时出现而控件需要的字符串类型是QString默认是utf-8。在 Visual Studio 中源代码文件的默认执行字符集可能是 Windows 默认的 ANSI 字符集这个字符集不直接支持 UTF-8 编码中的所有字符尤其是中文字符或其他非ASCII字符。
解决方案
有两种方法 1、使用Qstring::fromLocal8Bit() //右键菜单// 通过fromLocal8Bit的方式将一个const char*类型转成QStringstd::string str 删除;std::cout str std::endl;menu new QMenu(treeView_);menu-addAction(QString::fromLocal8Bit(添加));menu-addAction(QString::fromLocal8Bit(str.c_str()));经过测试这种方式不会影响std::string类型
2、使用#pragma execution_character_set(“utf-8”)预处理指令
在源文件添加这行代码
#pragma execution_character_set(utf-8)std::string str 删除;std::cout str std::endl;//右键菜单menu new QMenu(treeView_);menu-addAction(添加);menu-addAction(str.c_str());通过在源文件的开头添加 #pragma execution_character_set(“utf-8”) 这个指令你可以告诉编译器源文件中的字符应该按照 UTF-8 编码来处理。
这个指令只对 Visual Studio 编译器有效它会影响源文件中的所有字符包括字符串文字、字符文字和字符字面值。通过设置执行字符集为 UTF-8可以确保源文件中存在的 Unicode 字符能够被正确处理和显示。 如下图std::string类型的编码格式被改变输出乱码。
总结
开发过程中尽量使用QString::fromLocal8Bit()但是每次都要写这么长很麻烦。 #define StdString2QString(x) (QString::fromLocal8Bit(x.c_str()))std::string strAdd_ 添加;std::string strDel_ 删除;std::cout strDel_ std::endl;//右键菜单menu new QMenu(treeView_);menu-addAction(StdString2QString(strAdd_));menu-addAction(StdString2QString(strDel_));