QT实现UTF-8与GBK相互转换
UTF-8转GBK
分两步:首先转为Unicode,再转为对应的编码
QString str = "中文测试一下";
QTextCodec *utf8 = QTextCodec::codeForName("UTF-8");
QTextCodec *gbk = QTextCodec::codeForName("GBK");
qDebug() << "utf8:" << str.toUft8.toHex(':');
//utf8 -> gbk
//1.utf8 -> unicode
QString strUnicode = utf8->toUnicode(str.toUtf8());
//2.unicode -> gbk
QByteArray gbk_bytes = gbk->FromUnicode(strUnicode);
qDebug() << "gbk:" << gbk_bytes.toHex(':');
//gbk -> utf8
//1.gbk -> unicode
strUnicode = gbk->toUnicode(gbk_bytes);
//2.unicode -> utf8
QByteArray utf8_bytes = utf8->FromUnicode(strUnicode);
qDebug() << "utf8:" << utf8_bytes.toHex(':');
"中文测试一下"对应的utf8编码:e4:b8:ad:e6:96:87:e6:b5:8b:e8:af:95:e4:b8:80:e4:b8:8b,
对应的gbk编码:d6:d0:ce:c4:b2:e2:ca:d4:d2:bb:cf:c2
输出:
utf8: "e4:b8:ad:e6:96:87:e6:b5:8b:e8:af:95:e4:b8:80:e4:b8:8b"
gbk: "d6:d0:ce:c4:b2:e2:ca:d4:d2:bb:cf:c2"
utf8: "e4:b8:ad:e6:96:87:e6:b5:8b:e8:af:95:e4:b8:80:e4:b8:8b"

浙公网安备 33010602011771号