• 15583阅读
  • 12回复

发布程序中文乱码完全解决方案 [复制链接]

上一主题 下一主题
离线永不加赋
 
只看楼主 正序阅读 楼主  发表于: 2010-01-04
— 本帖被 wd007 设置为精华(2010-05-13) —
    我讨厌在程序中用tr()进行中文转换,我写的程序也没打算给老外用,因此希望程序中直接使用中文字符串,讨厌任何形式的转换操作。好在开发环境中运行程序显示中文没有问题,可部署到新机器上中文却是乱码,搜索了很多帖子,给出的答案都不尽详实(或许我没看到,抱歉),不是缺少必要的语句就是顺序有误。于是自己根据这些帖子的提示(还是要十分感谢这些帖子),试验了很多次,终于找到了终极方案,现与大家分享:

    1. 在主程序main开始处增加以下语句,注意要按顺序书写:
 QApplication::addLibraryPath("./plugins");
 QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
 QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
 QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
    2.程序其他地方,包括其他文件、类文件中,直接使用中文:
QString str = "我是中文";
lbl1.setText(str);
lbl2.setText("你好,中文!");
    3.在部署目录(执行程序放置的目录)中建立子目录 plugins,之后在此目录中建立codecs子目录,将qcncodecs4.dll复制到此子目录中,形成如下目录结构:
<app-install-dir>\plugins\codecs

    4.大功告成!试试你的程序吧,漂亮的中文出现了!

    其实plugins中还可以放置程序中使用的其他插件,如sql和图像处理插件(到qt安装目录下的qt\plugins下按目录结构复制你所需要文件的即可)。
离线ll0404

只看该作者 12楼 发表于: 2012-09-04
试验了下,楼上正解,顶。
离线downstairs

只看该作者 11楼 发表于: 2011-06-14
  1. int main(int argc, char *argv[])
  2. {
  3.     QApplication a(argc, argv);
  4.     QTextCodec *codec = QTextCodec::codecForName("System");    //获取系统编码
  5.     QTextCodec::setCodecForLocale(codec);
  6.     QTextCodec::setCodecForCStrings(codec);
  7.     QTextCodec::setCodecForTr(codec);
  8.     return a.exec();
  9. }

这个是完美解决方法
喜爱编程的猫头鹰
离线downstairs

只看该作者 10楼 发表于: 2011-06-14
。。hai s 还是乱码
喜爱编程的猫头鹰
离线shangshan
只看该作者 9楼 发表于: 2010-05-17
请问qcncodecs4.dll是从哪里考过来的?
离线wd007

只看该作者 8楼 发表于: 2010-05-13
可以加精。
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线jing51536
只看该作者 7楼 发表于: 2010-05-13
呵呵,,不错,,,,这样发布版是不是就不用包令QtCore库了.....?????

应该加精.....///../...
离线帅坤
只看该作者 6楼 发表于: 2010-05-13
请问一下在Linux下的药怎么解决啊?
离线binbinming
只看该作者 5楼 发表于: 2010-03-30
不错,讲的简单易懂,学QT还是需要有能力的人贡献.
离线lclflash

只看该作者 4楼 发表于: 2010-03-30
写得不错,我也一直被这个问题困扰!!!
离线howdyhappy
只看该作者 3楼 发表于: 2010-03-22
LZ,在我的windows mobile 6 系统上按你的方法做显示还是乱码
离线howdyhappy
只看该作者 2楼 发表于: 2010-03-22
support ! 君之所言,于我心有戚戚焉!!!
离线九重水

只看该作者 1楼 发表于: 2010-01-05
快速回复
限100 字节
 
上一个 下一个