前言
在处理文本数据的时候,我们经常遇到中文乱码、编码转换等问题,之前学习Qt在VS里也是受尽了中文乱码的折磨。其实,QString和QByteArray自带的几个函数可以解决大部分编码问题,而QTextCodec支持更多类型的编码。
“VS中使用Qt显示中文乱码了!”最开始遇到乱码问题,是在VS编写Qt程序时。需要将带中文的字符串显示到界面上,于是我直接setText一个QString,毫无意外的出现了乱码。因为VS默认是系统编码来保存的(gbk)并且设置不方便,所以中文需要这样添加:
//文本或是文件中的中文字符到ui
QString str=QString::fromLocal8Bit("文本编码gbk时中文");
//ui中的中文字符转回去
QString local=str.toLocal8Bit();
而Qt Creator文本编码默认为utf-8,所以可以直接用中文不需要转换的函数。
使用QTextCodec转换编码#include
#include
void test()
{
//utf-8 转 gb2312
{
QTextCodec *gb_code=QTextCodec::codecForName("GB2312");
QTextCodec *u8_code=QTextCodec::codecForName("UTF-8");
QByteArray u8_byte="utf-8中文";
QByteArray gb_byte=gb_code->fromUnicode(u8_code->toUnicode(u8_byte));
qDebug()
关注
打赏