先上结果:
utf-8文字: 这是测试文字123456abcdefg
Unicode码: 杩欐槸娴嬭瘯鏂囧瓧123456abcdefg
上代码:
1. utf8转Unicode码
QString utf8ToUnicode(const QString strUtf8)
{
QString strOut;
QString unidata = strUtf8;
for (int i = 0; i < unidata.length(); ++i)
{
ushort num = unidata[i].unicode();
if (num < 255)
strOut += unidata[i];
else
strOut += QString("&#x%1;").arg(QString::number(num, 16));
}
return strOut;
}
2. Unicode转utf8
QString unicodeToUtf8(const QString strUnicode)
{
QString strOut = strUnicode;
int nPos = 0;
QRegExp rx("&#x([0-9,a-f|A-F]{4});");
while ((nPos = rx.indexIn(strOut, nPos)) != -1)
{
QChar qCh(rx.cap(1).toUShort(nullptr, 16));
strOut.replace(nPos, rx.matchedLength(), qCh);
nPos += 1;
}
return strOut;
}
使用代码:
QString str = QString::fromLocal8Bit("5.6破坏的房屋和街区.svg");
QString strUnicode = utf8ToUnicode(str);
QString strUtf8 = unicodeToUtf8(strUnicode);