问题:
最近在做QT日志时,遇到了传入的字符为汉字的UNICODE编码的字符串,需要将其还原为汉字,
例如
"\u542F\u52A8...“ 是中文字符启动,这就是中文字符被转换为UNICODE存储的16进制,现在需要转换为原文字。
具体代码:
QStringList s;
QRegExp exp("\\u[0-9A-F]{4,}");
int nPos = exp.indexIn(msg,0);
// 利用正则表达式,找出二进制编码
while(nPos != -1)
{
s.append(exp.cap(0).mid(1));
nPos += exp.matchedLength();
nPos = exp.indexIn(msg, nPos);
}
QString strLocal;
foreach (const QString &t, s)
{
QString str = t.toUShort(0,16);
strLocal.append(t.toUShort(0,16));
}
其中 msg就是传入的UNICODE字符的二进制编码,如"\u542F\u52A8...“