QByteArray 转指定编码
#include <QTextCodec>
QString fromTextCodec(const QByteArray& str, const char* name)
{
if (str.isNull())
return QString();
else {
const char* data = str.data();
int size = qstrnlen(str.constData(), str.size());
if (size == 0 || (!*data && size < 0)) {
QStringDataPtr empty = { QStringData::allocate(0) };
return QString(empty);
}
#if QT_CONFIG(textcodec)
if (size < 0)
size = qstrlen(data);
QTextCodec* codec = QTextCodec::codecForName(name);
if (codec)
return codec->toUnicode(data, size);
#endif // textcodec
return QString::fromLatin1(data, size);
}
}
//test
QByteArray retdata(1024, 0);
fromTextCodec(retdata, "GBK");