Qt转换unicode实体

在QT 5.4和C ++中,我尝试解码具有unicode实体的string。

我有这个QString:

QString string = "file\u00d6\u00c7\u015e\u0130\u011e\u00dc\u0130\u00e7\u00f6\u015fi\u011f\u00fc\u0131.txt"; 

我想将此string转换为: fileÖÇŞİĞÜİçöşiğüı.txt

我试过QStringtoUtf8fromUtf8方法。 还试图逐字符解码。

有没有办法通过使用Qt转换它?

Qt提供了一个名为QStringLiteral的宏来正确处理字符串文字。

这是一个完整的工作示例:

 #include <QString> #include <QDebug> int main(void) { QString string = QStringLiteral("file\u00d6\u00c7\u015e\u0130\u011e\u00dc\u0130\u00e7\u00f6\u015fi\u011f\u00fc\u0131.txt"); qDebug() << string; return 0; } 

正如在上面的评论中提到的,您需要打印到支持这些字符的控制台才能使用。

我刚刚测试了这个代码:

 int main(int argc, char *argv[]) { QApplication a(argc, argv); QString s = "file\u00d6\u00c7\u015e\u0130\u011e\u00dc\u0130\u00e7\u00f6\u015fi\u011f\u00fc\u0131.txt"; qDebug() << s.length(); //Outputs: 22 qDebug() << s; //Outputs: fileÖÇŞİĞÜİçöşiğüı.txt return a.exec(); } 

这是与ubuntu上的Qt 5.4,所以它看起来像你的问题是只有一些操作系统。