Loading

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"

参考:
https://blog.51cto.com/wuquan1230/4760380

posted @ 2025-07-29 17:55  记录学习的Lyx  阅读(103)  评论(0)    收藏  举报