日前发现,直接将GBK编码QString通过toUtf8转码后发现时乱码,查找资料后发现直接转换时有问题的,写了几个函数已供使用:
#include <QTextCodec>
inline QString GBK2UTF8(const QString &inStr)
{
QTextCodec *gbk = QTextCodec::codecForName("GB18030");
QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");
QString g2u = gbk->toUnicode(gbk->fromUnicode(inStr)); // gbk convert utf8
return g2u;
}
inline QString UTF82GBK(const QString &inStr)
{
QTextCodec *gbk = QTextCodec::codecForName("GB18030");
QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");
QString utf2gbk = gbk->toUnicode(inStr.toLocal8Bit());
return utf2gbk;
}
inline std::string gbk2utf8(const QString &inStr)
{
return GBK2UTF8(inStr).toStdString();
}
inline QString utf82gbk(const std::string &inStr)
{
QString str = QString::fromStdString(inStr);
return UTF82GBK(str);
}
Email: sunfrank#gmail.com
本文提供了一种解决GBK编码的QString在转换为UTF-8时出现乱码的方法,并给出了具体的C++实现代码,包括从GBK到UTF-8及从UTF-8到GBK的转换函数。
8394

被折叠的 条评论
为什么被折叠?



