将以\u4e2d\u56fd表示的中文字符还原为中文,以qtc++实现,如无qt库可参考使用其他函数实现
#include <QByteArray>
#include <QString>
inline bool isNumber(char ch){
return (ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F') || (ch >= 'a' && ch <= 'f');
}
int main(int argc, char* argv[]){
QByteArray content = "hello\\u4e2d\\u56fd";
QString str;
for (int i = 0; i + 5 < content.size();){
if (content.at(i) == '\\' && content.at(i + 1) == 'u' &&
isNumber(content.at(i + 2)) && isNumber(content.at(i + 3)) &&
isNumber(content.at(i + 4)) && isNumber(content.at(i + 5)){
QChar var = content.mid(i + 2, 4).toInt(0, 16); // 分离出一个unicode字符
str.append(var);
i += 6;
} else {
QChar var = content.mid(i); // 分离出一个ascii字符
str.append(var);
i++;
}
}
}