前言

有一次我在linux平台上调用windows的接口,获取其中的中文信息时发现乱码,想到使用QTextCodec类进行转码

常见乱码大多是GBK和UTF-8之间的乱码,qt中gbk和utf-8之间的转码一般都要经过unicode过渡一下,即gbk->unicode->utf-8

	QString test;

	//gbk转unicode
	QTextCodec *gbk=QTextCodec::codecForName("gbk");
	test= gbk->toUnicode(test.toStdString().data());

	//unicode转uft-8
	QTextCodec *utf8=QTextCodec::codecForName("UTF-8");
	test= utf8->fromUnicode(test.toStdString().data());

注意:在测试中发现,我想手动设置字符串编码的时候,QTextCodec无法使用。比如我想把最后一行的test再转为gbk时,这时候就出问题了

下面介绍一些编码的相关知识:

编码的兼容性:(ASCII码即中英文数字和一些字符)

image-20220516144949884

常见乱码产生的原因:

image-20220516144218320

判断中文是哪种编码:

image-20220516162213188

链接:汉字字符集编码查询

码字不易,如果这篇博客对你有帮助,麻烦点赞收藏,非常感谢!有不对的地方,可以评论区交流。

Logo

更多推荐