QT中中文乱码与汉字编译报错解决

一、注释乱码

工具->选项->文本编辑器->宋体

二、QT中文有部分汉字编译报错问题

解决:

1.将对应的CPP文件用记事本打开另存为utf-8并替换;

此时编译通过,但汉字显示乱码

2.添加QTextcodec的两个语句运行是否还是乱码;

如果存在乱码,在对应的cpp头添加

##pragma execution_character_set("utf-8");

1》调用下面两个函数之一:

QTextCodec * textc = QTextCodec::codecForName("UTF-8");

QTextCodec * textc = QTextCodec::codecForName("GBK");

2》然后调用下面三个函数之一:

QTextCodec::setCodecForCStrings(textc);

主要用在用字符常量或者QByteArray构造QString对象时使用的默认编码方式

QTextCodec::setCodecForTr(textc);

QTextCodec::setCodecForLocale(textc);

3.用QTextStream文本流的方式操作

(1)

QString str;

tcpSocket->write(str.toUtf8().data);

(2)

QByteArray msg;

QDataStream in(&msg,QIODevice::WriteOnly);

in<<userName+tr(":Enter Chat Room");

if((length=tcpSocket->write(msg,msg.length()))!=msg.length())

{

return;

}

(3)方法三

QTextCodec *codec = QTextCodec::codecForName("GBK");

QString fileName = QFileDialog::getOpenFileName(this);

QFile file(fileName);

if(!file.open(QIODevice::ReadOnly))

return;

QByteArray content = file.readAll();

QString str = codec->toUnicode(content);

(4)方式四,解决在vs上的中文问题

#ifdef WIN32 

#pragma execution_character_set("utf-8") 

#endif 

(5)方式五,解决QTextStream乱码问题

QTextStream stream(&file);

stream.setCodec("utf-8");//"utf-8",是必须小写

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容