跳至主要內容

Qt

LincZero大约 2 分钟

Qt

目录

乱码问题

中文乱码或中文报错

  • 报错

    • 常量中有换行符
  • 报错解决方法

    • 顶部菜单 > 工具 > 选项 > 文本编辑器 > Behavior > 文件编码 > UTF-8 BOM > 修改成 “如果编码是UTF-8则添加”
    • 重新输入几个中文进字符串中(这有个bug,必须重新输入。也不用全部重新输入,就输入几个字就行,不然没用)
    • 但该方法使用后,虽然不报错了,但中文部分会显示成乱码
  • 乱码解决方法(强制使用某编码输出)

    • QString::fromLocal8Bit("中文文本"),解决Qt中MSVC编译的中文乱码的问题
  • 乱码解决方法(告诉编译器用什么编码)

    • #CONFIG += utf8_source
      msvc{
      	QMAKE_CFLAGS += -Qoption,cpp--unicode_source_kind,UTF-8
      	QMAKE_CXXFLAGS += -Qoption,cpp,--unicode_source_kind,UTF-8
      }
      
    • 网站也有人这样写:

      msvc{
      	QMAKE_CFLAGS += /utf-8
      	QMAKE_CXXFLAGS += /utf-8
      }
      

注意两个词的区别

  • 文件编码
  • 解释器解码

0

  • Qt编码实例(注意的是,编辑器)

    中文:
    你好世界
    
    ————————————————————————————————————————————
    Qt_编译结果:(MSVC和MinGW结果一样)
    \344\275\240
    \345\245\275
    \344\270\226
    \347\225\214
    
    Qt_编译结果转2进制:(这里的010有点诡异)
    01110 0100 010 111101 010 100000
    01110 0101 010 100101 010 111101
    01110 0100 010 111000 010 010110
    01110 0111 010 010101 010 001100
    
    Qt_编译结果转16进制:(会发现很奇怪,对不上)
    39 17aa0
    39 54abd
    39 17096
    39 d2a8c
    
    ————————————————————————————————————————————
    16进制:
    \u4f60\u597d\u4e16\u754c
    或你好世界
    
    16进制转2进制:(记得补前面的0)
    0100 111101 100000
    0101 100101 111101
    0100 111000 010110
    0111 010101 001100
    
    ————————————————————————————————————————————
    (其实和GBK并没什么关系的,这里写出来是参考学习而已)
    GBK:
    e4baa0e5a5bde4b896e7958c
    
    GBK转utf-8:
    c4e3bac3cac0bde7
    
    GBK转2进制:
    1100010011100011
    1011101011000011
    1100101011000000
    1011110111100111
    
    ————————————————————————————————————————————
    用GBK解码utf8编码:
    浣犲ソ涓栫晫
    
    用utf8解码GBK编码:
    ģºÊÀ½(或者形式为实体长方格子,或者形式为问好)