Habilidades prácticas de Qt: método de conversión de codificación de caracteres para contenido de envío digital mixto chino e inglés en modo de código de comunicación GPS Beidou

Si el artículo es un artículo original, indique la fuente del artículo original al reproducirlo.
La dirección del blog de este artículo: https://hpzwl.blog.csdn.net/article/details/131434492

Red Fatty Network Technology Blog Encyclopedia: La colección de tecnología de desarrollo (incluida la tecnología práctica Qt, Raspberry Pi, 3D, OpenCV, OpenGL, ffmpeg, OSG, microcomputadora de un solo chip, combinación de software y hardware, etc.) se actualiza continuamente...

Columna de desarrollo Qt: consejos prácticos


necesidad

Desarrolle la comunicación de posicionamiento GPS de Beidou y redefina un conjunto de protocolos personalizados en el protocolo de   " aplicación de comunicación ($TXSQ) ". El contenido de la comunicación implica la transmisión en chino, que debe codificarse de acuerdo con la herramienta Beidou.
  inserte la descripción de la imagen aquí

principio

  El protocolo de comunicación Beidou gps es en realidad tres modos: un carácter chino, un código, y el código se divide en código puro y mixto. El modo de código es en realidad conversión de código GBK para la parte visualizada.
  Al diseñar un protocolo personalizado, es necesario distinguir entre la transmisión mixta de instrucciones (los bytes de instrucción no se visualizan y se requiere GBK a Huanu para analizarlos en contenido de diálogo).


método de conversión

  Es un método de procesamiento de talla única que realiza directamente la conversión de codificación GBK que ignora la codificación local para el contenido visual definido en el protocolo.

#include <QApplication>
#include <QTextCodec>

#include <QDebug>
#include <QDateTime>
//#define LOG qDebug()<<__FILE__<<__LINE__
//#define LOG qDebug()<<__FILE__<<__LINE__<<__FUNCTION__
//#define LOG qDebug()<<__FILE__<<__LINE__<<QThread()::currentThread()
//#define LOG qDebug()<<__FILE__<<__LINE__<<QDateTime::currentDateTime().toString("yyyy-MM-dd")
#define LOG qDebug()<<__FILE__<<__LINE__<<QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz")


int main(int argc, char *argv[])
{
    
    
    QApplication a(argc, argv);


    QString str = QString("你好1234");
#if 1
    // 1.无视本地编码
    // 2.强制本地转换为GBK编码
    LOG << "内容:" << str;
    QTextCodec *pTextCodec = QTextCodec::codecForName("GBK");
    QByteArray data = pTextCodec->fromUnicode(str);
    LOG << "转换为GBK编码:" << QString(data.toHex(' '));
#endif

#if 1
    // 1.GBK编码转换为本地编码
    // 2.无视本地编码
//    QTextCodec *pTextCodec = QTextCodec::codecForName("GBK");
    pTextCodec = QTextCodec::codecForName("GBK");
    str = pTextCodec->toUnicode(data);
    LOG << "转换为本地文本:" << str;

#endif

    return a.exec();
}


  inserte la descripción de la imagen aquí


Si el artículo es un artículo original, indique la fuente del artículo original al reproducirlo.
La dirección del blog de este artículo: https://hpzwl.blog.csdn.net/article/details/131434492

Supongo que te gusta

Origin blog.csdn.net/qq21497936/article/details/131434492
Recomendado
Clasificación