一片冰心在玉壶

那时我们有梦,关于文学,关于爱情,关于穿越世界的旅行, 如今我们深夜饮酒,杯子碰到一起,都是梦破碎的声音. 交往都是初逢,爱情都在心里,往事都在梦中, 希望都带着注释,信仰都带着呻吟. 总有善意的光逃避现世的繁琐而寻找片刻的安宁, 也许,就是你凝视这里的眼睛

博客园 首页 联系 订阅 管理

网上找的2段代码:

 char * Gb2312_utf8(std::string strutf8, char* str)
  {
      //头文件QTextCodec
      QTextCodec* utf8Codec = QTextCodec::codecForName("utf-8");
      QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");

      QString strUnicode = gb2312Codec->toUnicode(strutf8.c_str());
      QByteArray ByteUtf8 = utf8Codec->fromUnicode(strUnicode);

      strcpy(str, ByteUtf8.data());
      return str;
  }
  char* utf8_Gb2312(std::string strgb2312, char* str)
  {
      QTextCodec* utf8Codec = QTextCodec::codecForName("utf-8");
      QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");

      QString strUnicode = utf8Codec->toUnicode(strgb2312.c_str());
      QByteArray ByteGb2312 = gb2312Codec->fromUnicode(strUnicode);

      strcpy(str, ByteGb2312.data());
      return str;
  }

我的蓝牙打印机只支持GB2312编码

下面这种转是可以的
utf8_Gb2312(tx.toLocal8Bit().data(),str)

 

QT中,转2312编码前,先转成8位的unicode编码可以

在qt5中,QString::toStdString()转的string的编码是utf-8

需要转unicode编码的string,用

1 QString qstr = "测试";
2 string  str = qstr.toLocal8Bit().data()

需要转utf-8编码的toStdString()

1 QString qstr = "测试";
2 string  str = qstr.toStdString();
反过来一样可以用。

posted on 2024-01-05 10:00  Sankye  阅读(57)  评论(0编辑  收藏  举报