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;
}
}