QCoreApplication a(argc, argv);//要做编码转换,先从QByteArray转到Unicode QString,往往手头上拿到的是QString//那么首先要把QString转成相应编码格式下QByteArray//QString如何转到相应编码格式下的QByteArray,也就是十六进制QByteArray localChinese="这是中文"; qDebug()<<""<<localChinese;//"\xD5\xE2\x...
QTextCodec* code = QTextCodec::codecForName("gb2312"); QByteArray arr= code->fromUnicode(buf); 那么arr保存的就是gbk编码格式的字符。 如果你现在的编码是gbk文字,显示到Qt中是乱码,那么你可以尝试以下操作: //GBK转utf8QString buf ="你好"; QTextCodec* code = QTextCodec::codecForName("gb2312...
头文件加入 #include<QTextCodec> QByteArraytmpQBA=m_pSocket->readAll(); QTextCodec *tc = QTextCodec::codecForName("GBK"); 1. QString tmpQStr = tc->toUnicode(tmpQBA); 1. //例如以下转换会导致中文乱码 QStringtmpQStr=QVariant(tmpQBA).toString(); 1. ...
在串口和网络通讯中接收的数据都是QByteArray格式,有时时需要转换为QString来显示到文本框中,如果对方送过来的数据是GBK编码的汉字,就需要用QTextCodec转换。 示例: if(serial.bytesAvailable() > 0) { QTextCodec* codec = QTextCodec::codecForName("GBK"); QByteArray recv = serial.readAll(); QString re...
第二个问题是输出中文显示乱码 我的方法是QString、QByteArray和char *的转换,如何转换参考:QT:QString、QByteArray和char *的转换 以下代码转自 char* ---QByteArray(const char*)---> QByteArray char* str; QByteArray byte(str); char* ---QString(const char...
代码如下:如果不不设全局的字符集是utf-8,那么网上一般的方法是可以转的。如下程序中 #define DD 1的情况下;但是如果设置了全局的utf-8,再用以前的方法: QByteArrayba=aaa.toLatin1(); constchar*c_str=ba.data(); PS:c_str所指向的内存单元,如果你想长时间使用你应该复制出来,要不可能过数行代码后,你...
; QByteArray byteArray = str.toUtf8(); qDebug() << byteArray.data(); 设置应用程序的编码: 在Qt应用程序的main函数中,可以设置全局的编码方式为UTF-8,以确保应用程序正确处理中文字符:cpp #include <QTextCodec> #include <QApplication> int main(int argc, char *argv[])...
"这是中文" 以上是针对于字符串变量是string类型的情况,若是QString则先将其转成string,参考代码如下: QString data=query.value(i).toString();//获得数据库中第i个字段的值QByteArray cdata=data.toLocal8Bit();string str=string(cdata).data();//这两行换成string str = data.toStdString();依然会...
QByteArray sr = strQ.toLocal8Bit(); int len= sr.length();//参考https://www.cnblogs.com/jadeshu/p/10663578.html char* buf =new char [len+2];//应该是怕有中文 buf[len] = buf [len+1] =0; // QByteArray转char* strcpy(buf,sr.data());// ...