Qt 中文支持记录
来源:互联网 发布:演绎法和归纳法 知乎 编辑:程序博客网 时间:2024/05/20 05:06
中文乱码问题,记录之。
也许你在用这个方法实现中文化,但它确实不够严谨
Laguage» C++ Title» 出现频率最高的办法
#include <QTextCodec> int main(int argc, char *argv[]) { QApplication app(argc, argv); //设置中文开始 QTextCodec::setCodecForTr(QTextCodec::codecForName(“gb18030″)); //设置中文结束 return app.exec(); }
很多地方都会告诉你,这样可以实现QT支持中文,包括我看的教程书上也是,他甚至告诉我要支持中文必须加入这段代码,但我想告诉你,这个办法是有问题的,而且这个问题还不小!我在两台同样是XP系统的机子上移植就出现了中文乱码问题,而且所有中文都是用了tr()的。所以请别迷信那些教程,实践才是真理!
你可以尝试这个方法
Laguage» C++ Title»
#include <QTextCodec> int main(int argc, char *argv[]){ QApplication app(argc, argv); //设置中文开始 QTextCodec *codec = QTextCodec::codecForName(“GB2312″); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForTr(codec); //设置中文结束 return app.exec(); }
虽然这个方法看似更为严谨,你可以尝试,不过这么写还是会有问题,至少没有解决我的问题。这也是我网上看到的出现频率也挺高的方法,不过我想说的是:其实这个办法治标不治本,因为它后面只是对拓宽对中文支持的范围,而一般我们都建议把中文写在tr(“”)里。
推荐个比较保险的办法
Laguage» C++ Title» 我推荐的方法
int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec *codec = QTextCodec::codecForName(“System”); //获取系统编码 QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForTr(codec); return a.exec();}
这里获取了系统字体编码,解决了我的问题,个人也觉得这个办法应该是个不错的解决方案。
也可能是字体选择不当造成的乱码
如果你始终解决不了乱码问题,可以尝试设置下字体,但其实是否是字体造成的乱码的方法很简单,如果出现的是一个个方块,便是字体设置不当,否则,优先考虑编码设置。
********************************************************分割线***********************转载感言*************************************************************
ps:
QTextCodec* codec = QTextCodec::codecForName("utf8"); //如果改成:GB2312,还会出现乱码 ,至于何原因期待的大家回答 QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForTr(codec); qDebug()<<"这是中文"; return a.exec();
转自:http://www.ctogo.net/313.html
- Qt 中文支持记录
- 让QT支持中文
- qt支持中文、国际化
- Qtopia/Qt 中文支持
- QT 中文支持
- QT编程支持中文
- QT中文支持
- Qt支持中文显示
- qt支持中文
- qt中支持中文
- qt webkit 中文支持
- QT支持中文
- QT 4.7支持中文
- QT中文支持
- Qt中文支持
- QT如何支持中文
- qt 5 中文支持
- busybox 中文支持--记录
- python exec
- 黑马程序员_java 异常之throws、throw 和 RuntimeException
- 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(零)数据库访问层
- JavaScript 实现POST方式提交表单
- Shell脚本常见面试题
- Qt 中文支持记录
- android JNI javah的使用
- 让程序异常退出后自动重启
- 换位思考权限设计(把复杂的问题,简单化才是水平,用简单的道理解决复杂的问题)
- java 笔记
- sc.exe 详解
- freemarker 设置编码
- cppunit在linux下的安装使用
- Android JNI开发入门之二