为什么qt设置了utf-8 bom 格式后还是有乱码

 
 

有乱码


void SingleApplication::_showInstanceRunningDialog()
{
    // 创建一个提示窗口
    QMessageBox msgBox;
    msgBox.setIcon(QMessageBox::Information);
    msgBox.setWindowTitle("应用已运行");
    msgBox.setText("应用程序已经在运行中。");
    msgBox.setStandardButtons(QMessageBox::Ok);
    msgBox.exec();
}
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif

头文件上加上述后就可以没乱码了

后面发现原来是我的pro中禁用

DEFINES -= _UNICODE,所以头文件上要加上述代码

您在 Qt 项目的 .pro 文件中使用 DEFINES -= _UNICODE,这将禁用 Unicode 支持。这可能导致在处理非ASCII字符时出现乱码问题。

为了正确处理非ASCII字符并防止乱码,建议将 DEFINES 行修改为以下内容:

 
 

DEFINES += UNICODE

或者,如果您希望同时启用 ANSI 和 Unicode 支持,可以使用以下设置:

 
 

Copy Code

DEFINES += UNICODE _UNICODE

通过启用 UNICODE 宏定义,Qt 将使用 Unicode API,并正确处理中文字符。

请注意,在修改 .pro 文件后,可能需要重新生成项目来使更改生效。确保代码文件保存时使用了正确的编码(如 UTF-8),并正确处理和显示中文字符

猜你喜欢

转载自blog.csdn.net/qq_30377315/article/details/132986152