想用Qt5.9的QFile内容写入ini保存参数,
但是这里写好了以后发现英文部分正常,但中文部分并不能读取参数,
ini我手动使用txt打开中文部分是“?”,qDebug控制台输出是 不认识的中文字符
网上查询应该是编码格式问题,
项目advanced save option是 GB2312 936格式
代码如下
QFile file(项目路径+/1.ini);
file.open((QIODevice::WriteOnly | QIODevice::Truncate));
QString str = Qt组件中的中文参数(currentText等)+\n;
file.write(str.toLatin1());
file.close();
这里toutf8和tolatin、tolocale8bit已经试过似乎都不支持中文, 请问读取和写入具体应该怎么修改。
查看Qt Creator编码格式是GBK还是UTF-8
1.首先确定写入的格式是GBK还是utf-8,vscode打开右下角有编码格式
2.如果gbk转utf-8代码如下,反之则调换下面两个参数
QByteArray utf8ToGBK(QString str)
{
QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");
QTextCodec *gbk = QTextCodec::codecForName("gbk");
auto strUnicode = utf8->toUnicode(str.toLocal8Bit().data());
return gbk->fromUnicode(strUnicode);
}
3.用vscode打开左下角有编码格式,一般来说windows平台文件都是gbk的。
把文件转换成utf-8编码格式再试试呢。
INI用QSettings不是更方便,创建QSettings后先用QSettings::setIniCodec设置编码
这样:
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A