關於編碼

Qt中的字符編碼

需清醒的認識到,編碼與解碼需相同。

  • 案例 友善串口助手 模擬socket客戶端,發送文本“你好”Qt編寫的程序 中,未做處理時,Qt程序中接收到的字節數組(QByteArray)的值爲 ÄãºÃ,爲了確定編碼,將此字節數組複製到網站中,查詢到原來的編碼可能爲GBK,在網站中查看到GBK字符編碼中字符你好的16進制值分別爲 C4E3、BAC3,與在Qt中的debug模式下顯示的值相同,所以可確定在windows 10友善串口助手 中以 ASCII發送的時候,編碼是用的GBK,剩下的就是在程序中處理數據了。
  1. 首先得到未處理的字節數組。

    QByteArray data = socket->readAll();
    
  2. 將字節數組視爲GBK並轉爲Unicode編碼。

    QTextCodec * gbk= QTextCodec::codecForName("GBK");
    QString str =  gbk->toUnicode(data);
    
  3. 將unicode編碼的QString轉爲指定編碼的字節數組。

    const QByteArray& result = gbk->fromUnicode(s);
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章