Qflie-文件写入——读出-txt文件出现乱码 文件读出是 ???????
问题描述:
1.写入文件时,txt文件就是?????(乱码)读出自然也是?????
2.写入文件正常。txt文件也是正常,读出时,出现?????(乱码)或者是16进制类型
原因分析:使用了.toLatin1();.toLatin1();
1.采用写入编码格式为UTF-8 使用下面代码写入
QByteArray by=qs.toLatin1(); //编码格式为UTF-8但是写入文字不能识别,全是?????
2.1.采用写入编码格式为ASNI 使用下面代码写入
QByteArray by=qs.toLocal8Bit(); //编码格式为 ASNI 可正常写入txt文件 但是一般读出文件时较麻烦
解决方案:使用.toUtf8();
QByteArray by=qs.toUtf8(); //编码格式为UTF-8 Qt读取时也比较简单
正常读取代码
写入:
QString qs=ui->lineEdit->text()+"\n"+ui->lineEdit_2->text();
QString filename ="log.txt";
file.setFileName(filename ); //打开文件夹
if(file.open(QIODevice::WriteOnly |QIODevice::Text |QIODevice::Append)){
// QByteArray by=qs.toLatin1(); //编码格式为UTF-8但是写入文字不能识别,全是?????
// QByteArray by=qs.toLocal8Bit(); //编码格式为 ASNI 可正常写入txt文件 但是一般读出文件时较麻烦
QByteArray by=qs.toUtf8(); //编码格式为UTF-8 Qt读取时也比较简单
char*ch=by.data();
file.write(ch);
}
file.close();
读出:
QString qs=ui->lineEdit->text()+"\n"+ui->lineEdit_2->text();
QString filename ="log.txt";
file.setFileName(filename ); //打开文件夹
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
while (!file.atEnd())
{
QByteArray data=file.readLine();
qDebug()<<data.data(); //若是在直接读取data,而不是data.data(),会读出16进制字符
}
file.close();