我亏一点 - 字符编码
type: channel
link: https://www.000081.xyz/index.php/tag/字符编码/
items: C++ QT框架中文编码

C++ QT框架中文编码
type: item
date: 2022-03-13T11:11:00+00:00
description: AI摘要 本文介绍了字符编码的基础概念及Unicode标准。QT框架内部统一使用UTF-16编码，而源代码、输入及外部数据等外部编码格式多样。为解决非UTF-8编码（如GBK）导致的乱码问题，可通过QTextCodec类将外部编码转换为QT内部的Unicode编码。 此内容根据文章生成，仅用于文章内容的解释与总结 QT中文编码字符编码任何字符在计算机内部都是用数字显示，即字符编码不同国家和地区都为自己都语言定义了不同的编码标准英国：基础ASCII，128个字符欧洲：扩展ASCII，256个字符中国大陆：GBK，21003个字符港台地区：BIG5，13060个字符统一编码国际标准化组织制定的ISO/IEC 10646标准是一种可以支持世界上所有语言文字的字符编码标准，称为unicode根据字长的不同，unicode又被分为两个字符集：ucs-2和ucs-4UCS转化格式无论是ucs-2还是ucs-4，作为unicode字符集，都只是规定了如何对一个字符编码，但并没有规定如何传输、保存这个编码，即在程序中如何表示这个编码，而utf所要解决的就是这个问题，根据转化算法的不同可分为：utf8，utf16，utf32QT内部编码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; }