Qt字符编码转换

  1. toLatin1
  2. toLocal8Bit
  3. toUcs4
  4. toUtf8
  5. unicode
  6. utf16
  7. toStdString
  8. toStdU16String
  9. toStdU32String
  10. toStdWString

测试代码

void TestSet() {
    QString tmp("你好,世界");
    qDebug() << "tmp = " << tmp << "\n";
    qDebug() << "tmp.toLocal8Bit() = " << tmp.toLocal8Bit() << "\n";  // utf-8编码16进制
    qDebug() << "tmp.toLatin1() = " << tmp.toLatin1() << "\n";        // 不在编码集中
    qDebug() << "tmp.toUcs4() = " << tmp.toUcs4() << "\n";            // unicode编码10进制,每个汉字均使用uint数字表示
    qDebug() << "tmp.toUtf8() = " << tmp.toUtf8() << "\n";            // utf-8编码16进制
    qDebug() << "tmp.utf16() = " << tmp.utf16() << "\n";
    qDebug() << "tmp.unicode() = " << tmp.unicode() << "\n";
#ifndef UNICODE
    qDebug() << "tmp.toStdString() = " << tmp.toStdString() << "\n";
#else
    qDebug() << "tmp.toStdWString() = " << tmp.toStdWString() << "\n";
#endif
    qDebug() << "tmp.toStdU16String() = " << tmp.toStdU16String() << "\n";
    //qDebug() << "tmp.toStdU32String() = " << tmp.toStdU32String() << "\n";

}

结果输出


tmp =  "你好,世界" 

tmp.toLocal8Bit() =  "\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x8C\xE4\xB8\x96\xE7\x95\x8C" 

tmp.toLatin1() =  "?????" 

tmp.toUcs4() =  QVector(20320, 22909, 65292, 19990, 30028) 

tmp.toUtf8() =  "\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x8C\xE4\xB8\x96\xE7\x95\x8C" 

tmp.utf16() =  0x22b11050 

tmp.unicode() =  0x22b11050 

tmp.toStdWString() =  "你好,世界" 

tmp.toStdU16String() =  "你好,世界" 

参考

你好,世界的编码

posted @ 2022-09-13 16:29  flxx  阅读(154)  评论(0编辑  收藏  举报