C++ QT框架中文编码

1585364631
2022-03-13 / 0 评论 / 230 阅读 / 正在检测是否收录...

QT中文编码

  • 字符编码

    • 任何字符在计算机内部都是用数字显示,即字符编码
    • 不同国家和地区都为自己都语言定义了不同的编码标准

      • 英国:基础ASCII,128个字符
      • 欧洲:扩展ASCII,256个字符
      • 中国大陆:GBK,21003个字符
      • 港台地区:BIG5,13060个字符
  • 统一编码

    • 国际标准化组织制定的ISO/IEC 10646标准是一种可以支持世界上所有语言文字的字符编码标准,称为unicode
    • 根据字长的不同,unicode又被分为两个字符集:ucs-2和ucs-4
  • UCS转化格式

    • 无论是ucs-2还是ucs-4,作为unicode字符集,都只是规定了如何对一个字符编码,但并没有规定如何传输、保存这个编码,即在程序中如何表示这个编码,而utf所要解决的就是这个问题,根据转化算法的不同可分为:utf8,utf16,utf32
  • QT内部编码

    • qt应用程序编码接口及其内部实现所使用的字符,都是以unicode(UTF16),也就是unicode就是qt的内部编码
  • 外部编码

    • 程序源代码中使用的字面值形式的字符和字符串、用户通过程序界面输入的字符和字符串,以及程序通过文件、网络、进程间通信或其他媒介读取的字符和字符串,受系统环境等因素的影响,通常会是各种各样的编码格式,一般是将其统称为外部编码
  • 编码转化

    • 默认清空下,qt5可以正确理解utf8格式编码,并且自动转为内部unicode编码,使用utf8的中文字符串能正常显示,但是其他格式的外部编码如gbk,则会出现乱码

通过QTextCodec实现编码转换

#include "QTextCodec"
using namespace std;
int main(int argc, char *argv[]) {
      QTextCodec *codec = QTextCodec::codecForName("GBK");
      QString string1 = codec->toUnicode("GBK编码的中文字符串");
      return 0;
}
0

评论 (0)

取消