发新帖

[C#/ASP.NET] [C/VC/C++] [QT] QT5.14.2 该文件包含不能在当前代码页(936)中表示的字符

零下一度 2022-11-18 976

WARNING: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 UNICODE 格式以防止数据丢失。


1、忽略警告,但是问题还在

(1)找出警告的文件,然后在该文件的开始处加入下面的语句:

#pragma warning (disable:4819)

(2)如果是 VS IDE,还可以:在Project -> Properties -> Configuration Properties -> C/C++ -> Advance 的 Disable Specific Warnings 中添加相应的警告编号:4819;


2、去掉这个警告

(1)转换Code文件为: UTF-8 带BOM 格式;

(2)如果是 Qt Creator,设置【项目编辑器】,【文件编码】为:UTF-8,【UTF-8 BOM】:如果编码是UTF-8则添加。最后随便改动一下出现警告的文件保存,就会保存为:UTF-8 带BOM 格式。

(3)如果是 VS IDE,打开有该warning的文件,点击【文件】选【高级保存选项】,改变编码格式为【简体中文(GB2312)- 代码页936】或【Unicode(UTF-8 带签名)-代码页65001】,保存。


QT CREATOR 设置默认编码格式为 UTF-8

为了保证 QT的文件能在Windows 和Linux下都能正常打开,以及避免由于Windows下和Linux下编码不同而产生的中文字符乱码的问题,需统一代码中的字符编码。为了达到这个目的,需设置 QtCreator的默认编码为UTF-8。

在“工具->选项 ->文本编辑器-> 行为”把默认编码改为“ UTF-8”。


QT中QMESSAGEBOX显示中文乱码&从TEXT读取中文乱码

1、QMESSAGEBOX显示中文乱码

解决方法:

QMessageBox messageBox(QMessageBox::NoIcon,QString::fromLocal8Bit("退出"),QString::fromLocal8Bit("你确定要退出吗?"),QMessageBox::Yes | QMessageBox::No, NULL);

2、读取TXT文档乱码

    QFile file(m_strFile);
    if(file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        while(!file.atEnd())
        {
            QString s = codec->toUnicode(file.readLine());
            qDebug << s;
        }    
    }



最新回复 (0)
返回
零下一度
主题数
928
帖子数
0
注册排名
1