Qt下中文乱码问题的解决办法

转载 2013年07月27日 13:36:30

Qt在设计开始就考虑了对多语言的支持.因此对中文的支持还是比较容易.很容易编写出多语言的程序来.关于Qtopia /QT的中文支持.主要有如下情况

  1.在自己的QT程序中加入中文支持.

  2.将Qtopia 的桌面显示中文

  QT应用程序多语言支持的思路是,跟WINDOWS非常象。就是非英语的字符串不编译在程序当中。而是保存在一个字典文件里。在程序中使用是这个字典的索引。这样在不修改的程序的情况,只要换成不同的字典文件就会支持不同语言的显示。
    在WINDOWS程序中,这个字符串是资源文件(*.res),这个文件最后被链接到可执行文件当中。在程序中使用整数类型的资源ID,来从资源文件中,通过API函数LoadString()来从资源文件取出字符串。
    在QT也采用类似的流程。字符串保存在翻译文件(*.ts)当中,发布时它将会转换成二进制的 .qm文件。这个文件不需要链接可执行文件当中。程序中使用英文字符串作为字典的索引。使用tr()函数从翻译文件检索相应的字符串。

这里我只总结第一种方法。(我项目的名称为mutilDialog)

   一,首先需要手工修改pro文件.增加ts文件的选项,在pro要增加一项 TRANSLATIONS = mutilDialog.ts

   二,用QT提供的工具lupdate生成一个ts文件。在命令行输入

     lupdate mutilDialog.pro

     会自动生成一个mutilDialog.ts文件。ts文件其实就是简单的xml语言写的一个文件。

 

   三,用QT自带的工具linguist翻译mutilDialog.ts对应的词。你也可以直接打开mutilDialog.ts文件自己手动修改。

   四,用QT提供的工具将mutilDialog.ts编译成二进制的mutilDialog.qm文件。在命令行输入 lrelease mutilDialog.ts就会生成相应的文件了。

   五,在主程序中加入对Qtranslator类的支持。并且装入相应的qm文件

#include <qapplication.h>
#include <qtranslator.h>

 

int main( int argc, char ** argv )
{
    QApplication a( argc, argv );

     .......
    QTranslator translator(0);
    translator.load(QString("mutilDialog.qm"));
    a.installTranslator(&translator);    

  ................

    return a.exec();
}

Qt 5 中解决中文乱码的方法

Qt 5 中解决中文乱码的方法在 Qt 4 的时代,解决中文乱码挺麻烦。要考虑用的是什么编译器,具体的可以参考下面这篇文章: http://blog.csdn.net/brave_heart_lxl...
  • liyuanbhu
  • liyuanbhu
  • 2017年05月21日 11:47
  • 3854

Linux 与 Windows下QT 显示MySQL 中文乱码问题

最近在用Qt和MySQL数据库,遇到中文乱码问题,看到一篇解决中文乱码问题的好帖子,分享了~~ 转载 Linux下 这种方法应该是最快捷解决中文乱码的办法了,不用改mysql的编码,仅限于linux下...
  • u013755307
  • u013755307
  • 2014年02月25日 14:47
  • 1240

QT下面的中文乱码问题

参考  http://bbs.csdn.net/topics/310250460
  • ljt350740378
  • ljt350740378
  • 2016年03月07日 18:05
  • 2298

【Qt】Qt5中文乱码

专门找了资料,把目前测试能用的解决中文字符乱码的方法整理的一下
  • shihoongbo
  • shihoongbo
  • 2015年08月15日 03:12
  • 7063

彻底弄懂Qt的编码(汉字乱码问题及相关函数作用)

测试1新建test工程用于测试,main.c文件内容如下:#include #include int main(int argc, char *argv[]) { QCoreApplicat...
  • u012790503
  • u012790503
  • 2016年09月09日 11:05
  • 6110

Qt中文乱码问题解决办法

也许你在用这个方法实现中文化,但它确实不够严谨 #include   int main(int argc, char *argv[]) {             QApplication ap...
  • w112121
  • w112121
  • 2014年03月17日 13:48
  • 711

QT使用QTcpSocket和QTcpServer通信是出现乱码的问题

在使用QTcpSocket和QTcpSever出现乱码的问题,从根本上来说是文本的编码的问题,如果发送端的数据使用的是一种文本编码方式,而接收端没有使用相应的文本解码方式来解释发送过来的数据,那么就会...
  • xinzhiyounizhiyouni
  • xinzhiyounizhiyouni
  • 2015年11月19日 22:08
  • 880

QT5 MSVC2013数据库SQLserver操作中文显示乱码问题

环境: WIN10×64 QT5.5_MSVC2013 SQLSERVER_2012 VS2013_community 设置 将Qt Creater进行如下设置; 工具>>选项>>文本编辑器>>文件...
  • wangmi0354
  • wangmi0354
  • 2016年02月24日 10:40
  • 1636

解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)

一、Qt环境设置 Qt Creator,菜单->工具->选项->文本编辑器->行为->文件编码: 默认编码:System(简体中文windows系统默认指的是GBK编码,即下拉框选项里的GBK/win...
  • libaineu2004
  • libaineu2004
  • 2014年02月15日 16:46
  • 88242

QT5 解决中文乱码问题

fromLocal8Bit
  • tony2278
  • tony2278
  • 2016年08月13日 16:25
  • 683
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt下中文乱码问题的解决办法
举报原因:
原因补充:

(最多只允许输入30个字)