Qt中unicode转utf-8

53 篇文章 36 订阅

最经在研究AT指令接受短信,短信是unicode编码,接受后需要根据系统的编码方案进行相关的转码

比如接受到了一串字符4F60597D,它是“你好”的unicode编码,一个unicode编码占两个字节,所有可以使用4个16进制数表示:4F60->你,597D->好。那我们怎么转换了?

在QString中存放的是QChar,你可以把她当作ushort来看待。因为Qt本身的编码方案就是unicode。

  QTextCodec *codec = QTextCodec::codecForName("utf-8");

    QString str = "0891683108500145F1240D91685143256178F0000831214281659423044F60597D";
    

    QString t = str.mid(58);

    QStringList s;

    for(int i = 0;i < t.length();i += 4) {
        s.append(t.mid(i,4));
    }


    QString t1;

    foreach (const QString &t, s) {
        t1.append(t.toUShort(0,16));
    }




    QString re = codec->fromUnicode(t1);


    qDebug() << QObject::trUtf8(re.toLatin1().data());
先将要处理的字符串按4个一段分割然后转化成ushort也就是QChar然后拼成一个QString,其实两步可以化成一步做。

不知道怎么你显示不出

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值