QString GBK2UTF8(const QString &str)
{
QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");
return utf8->toUnicode(str.toUtf8());
}
QString UTF82GBK(const QString &str)
{
QTextCodec *gbk = QTextCodec::codecForName("GB18030");
return gbk->toUnicode(str.toLocal8Bit());
}
std::string GBK2UTF8(std::string &str)
{
QString temp = QString::fromLocal8Bit(str.c_str());
std::string ret = temp.toUtf8().data();
return ret;
}
std::string UTF82GBK(std::string &str)
{
QString temp = QString::fromUtf8(str.c_str());
std::string ret = temp.toLocal8Bit().data();
return ret;
}
在用QT作为模块向其他进程发送消息时,消息内容带有中文,在接收进程中(MFC)收到的字符由于编码差异,在使用字符串时显示异常。QT编码时使用的是UTF-8格式,VC中使用的多字节(GBK),直接进行使用字符串会解析异常,如果得到的字符串保存到xml等文件中,还会导致文件编码格式发生改变。所以在传输时,需要将待传输的字符转换成目标平台相同格式的编码。