今天在用Qt读取一个文件时,发现路径转为std::string时出现了乱码。
网上查找说使用utf-8 就行,但是我在测试时并没有效果。后来发现local8bit是可以的,那么这两个有什么区别呢?
效果:
源码:
qDebug()<<"filePath: "<<filePath<<"\n";
qDebug()<<"filePath local8bit : "<<filePath.toLocal8Bit().toStdString()<<"\n";
qDebug()<<"filePath utf8 : "<<filePath.toUtf8().toStdString()<<"\n";
std::cout<<"image path local8bit : "<<filePath.toLocal8Bit().toStdString()<<"\n";
std::cout<<"image path utf8 : "<<filePath.toUtf8().toStdString()<<"\n";
通义千问是这样回答的,如果按照回答,那toUtf8()应该是更安全的选择。
难道QString读到的不是UTF-8?
但是这样看也确实是UTF-8。
奇怪......
后面为了排除问题,重命名了文件,再读取,结果发现现在可以读取了。
那看来应该是外部下载文件的问题。
那如果遇上这种问题该怎么办呢?还是使用local8bit更安全一点?