外部输入的 \u1234 在代码里相当于 \\u1234,只是普通的字符串,而不是 Unicode,需要单独替换一遍:

1
2
3
4
5
6
7
8
QString filename = "\\u6211\\u662f\\u4e2d\\u6587";
do {
int idx = filename.indexOf("\\u");
QString strHex = filename.mid(idx, 6);
strHex = strHex.replace("\\u", QString());
int nHex = strHex.toInt(0, 16);
filename.replace(idx, 6, QChar(nHex));
} while (filename.indexOf("\\u") != -1);