Qt中文乱码问题解决办法
2011-07-20 21:47
369 查看
也许你在用这个方法实现中文化,但它确实不够严谨
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();
}
这里获取了系统字体编码,解决了我的问题,个人也觉得这个办法应该是个不错的解决方案。
也可能是字体选择不当造成的乱码
如果你始终解决不了乱码问题,可以尝试设置下字体,但其实是否是字体造成的乱码的方法很简单,如果出现的是一个个方块,便是字体设置不当,否则,优先考虑编码设置。相关文章推荐
- Qt中文乱码问题解决办法
- Qt中文乱码问题解决办法
- Qt中文乱码问题解决办法
- Qt中文乱码问题解决办法【转】
- Qt中文乱码问题解决办法
- 多平台QT中文乱码问题解决办法
- QT中文乱码问题解决办法
- QT中文乱码问题解决办法
- WEB开发中常见的几个中文乱码问题和解决办法
- QT解决中文乱码问题(1)
- Ajax + jsp +servlet 中文乱码问题解决办法
- qt5.6 中文字体显示乱码问题解决方法
- get/post时中文乱码问题的解决办法
- 使用xshell登录中文版CentOS时,在xshell下显示中文乱码,通过如下办法可以有效的解决乱码问题
- Struts中文乱码问题解决办法
- 解决MySQL客户端输出窗口显示中文乱码问题的办法
- Qt做发布版,解决声音和图片、中文字体乱码问题(转)
- graphviz在linux上的中文乱码问题解决办法
- 解决Qt程序发布时中文乱码问题(通过QApplication.addLibraryPath加载QTextCodec插件)
- 解决web应用开发中中文乱码问题的常用办法(暂时只用过这些方法)