Qt4 取消unicode字符串转义,可以';t更换';%';与'\u';

Qt4 取消unicode字符串转义,可以';t更换';%';与'\u';,qt4,Qt4,我想取消unicode字符串的转义,如%uxxx%uyyy,因此我尝试了: QString unescapeUnicode (const QString & src) { return QString::fromUtf8 ( src.replace ("%", "\u").toAscii() ); } 因为\u不是标准的转义序列,所以它不会编译 但是使用QString::fromUtf8(“\uxxx\uYYYY”)输出效果很好,这里可能有什么问题?使用文本字符串的转义不适用于

我想取消unicode字符串的转义,如
%uxxx%uyyy
,因此我尝试了:

QString unescapeUnicode (const QString & src)
{
    return QString::fromUtf8 ( src.replace ("%", "\u").toAscii() );
}
因为
\u
不是标准的转义序列,所以它不会编译


但是使用
QString::fromUtf8(“\uxxx\uYYYY”)
输出效果很好,这里可能有什么问题?

使用文本字符串的转义不适用于字符串。您需要解析每个字符的unicode值,并逐个字符构建字符串。例如:

QString unescapeUnicode(const QString& src)
{
    QStringList chars = src.split("%u", QString::SkipEmptyParts);
    QChar* qchars = new QChar[chars.size()];

    bool ok;
    for (int i = 0; i < chars.size(); ++i)
    {
        qchars[i] = QChar(chars[i].toInt(&ok, 16));
        if (!ok)
            return "ERROR";
    }

    QString result(qchars, chars.size());
    delete[] qchars;
    return result;
}
QString txt = unescapeUnicode("%u00a2%u20ac%u3b2");