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)