更正一下上文的结论:
QTextCodec* codec =QTextCodec::codecForName("utf8");
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QString fileName = QFileDialog::getOpenFileName();
if (!fileName.isEmpty())
{
const char*p = fileName.toStdString().data();
qDebug("%s", p) ;
QString temp = tr(p);
ui->lineEdit->setText(temp);
}
这样写显示和打印都正常, 如果使用"GB2312"的话, qDebug还是会输出乱码, 不过使用qDebug() << p ; 的形式输出没问题.