Qt默认是不支持中文的,如果想要显示中文,需要在main函数中进行修改:
首先在main.cpp中添加头文件
然后在main()函数开始出添加:
-
QTextCodec *codec = QTextCodec::codecForName("GB2312");
-
QTextCodec::setCodecForLocale(codec);
-
QTextCodec::setCodecForCStrings(codec);
-
QTextCodec::setCodecForTr(codec);
添加了QTextCodec类的头文件包含。QTextCodec类提供了文本编码的转换功能。
使用了QTextCodec类中的静态函数setCodecForTr(),用来设置QObject::tr()函数所要使用的字符集,就像所看到的那样,tr()函数可以使用指定的字符集来对文本编码进行转换。这里使用了QTextCodec::codecForName(“
GB2312”)指定使用“
GB2312”字符集进行编码,读者也可以根据具体环境设置其他字符集。
为了能够显示中文,需要设置字符集,然后使用QObject::tr()函数将字符串进行编码转换。其实tr()函数还可以实现多语言支持,需要说明的是,setCodecForTr()函数最好的放置位置放在main()函数中的QApplication对象下面。Qt程序中所有要显示到界面上的字符串最好都使用tr()函数括起来,而对于不是要显示到界面上的字符串中如果包含了中文,可以使用QString()进行编码转换,这需要在主函数中添加如下代码进行设置:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("
GB2312"));
添加这两部分代码后,可以显示汉字,而且在字符串中也不需要进行其他的处理。
对于单个程序,这样就可以了。我在第一次遇到这种情况时是在socket中,所以需要在client和server两个程序中同时添加这部分代码,才能让两个程序正常显示汉字。
阅读(2250) | 评论(0) | 转发(0) |