我正在尝试从具有几个特殊字符的文件中加载名称,如果该名称在文件中(看起来像菜单:MarekRužička/),则将其显示。代码在这里:

QFile File("info/"+meno+".txt");
File.open(QIODevice::ReadOnly);
QVariant Data(File.readAll());
QString in = Data.toString(), pom;
if(in.contains("meno:")){
pom = in.split("meno:").at(1);
pom=pom.split("/").at(0);
ui->label_meno->setText(trUtf8("Celé meno: ")+pom);}

trUtf8(“Celémeno:”)部分显示良好,但我找不到如何在pom中显示字符串,仅它看起来像MarekRužiÄka,使用toUtf8()函数使其变成MarekRuþiÃka,我也尝试将其转换为stdString但也不起作用。我不确定从QFile到QVariant到QString的转换是否正确,如果这会导致如何正确读取数据的问题呢?

最佳答案

试试这个:

QTextCodec* utf = QTextCodec::codecForName("UTF-8");
QByteArray data = <<INPUT QBYTEARRAY>>.toUtf8();
QString utfString = utf->toUnicode(data);
qDebug() << utfString;

07-28 01:32