发布Qt程序时别忘了带上plugins(codecs等)

最近的一个程序中要用到国语语言的文本文件,包括泰文,日文,越南等等。很郁闷的是以前所有的文件都是本地编码,所以在处理这些文件的时候,都必须转换成unicode编码。还好在Qt中这很容易办法,QTextStream::setCodec()就可以了。
在发布这个程序的时候,很奇怪的问题是在我PC上运行一切OK,在同事电脑上处理出来的数据和我不一样。英文,中文都是正确的。日文却是错误的。这让我始料未及。在程序中找了一天的,没有发现什么问题。最后猜测问题可能处在Qt上。因为我电脑上装了Qt的SDK,而同事电脑上没有。
难道是需要的DLL没有发布完?但是程序运行没问题。

我想起Qt中带了很多插件(Plugin),于是在Qt目录下的"qt\plugins"下果然发现一个"codecs"的文件夹。下面的文件从文件名就可以区别出来是“简体中文,繁体中文,日文,韩文”的编码插件。于是我把这个文件夹拷贝到程序的当前目录下,在同事电脑运行,一切OK了。
当然,codecs文件下面的".a"文件都可以删除,".dll"文件也可以把带"d"的debug版本的删掉。

注意的是一定要把codecs文件下放在发布程序的同目录下,且不要更改目录名字。

想来,unicode 一共6W多的字符, 中日韩的字符就占了4W多,且和本地编码都没有兼用,比如中文的GB18030,所有的转换都需要一一对映,没有转换的公式。难怪Qt对中日韩的字符都单独处理了。

plugins文件夹下面还有很多其他的插件:
sqldrivers 数据库连接的
imageformats 图片格式处理的
codecs 字符编码处理
............... 还有几个不列举了。

总之发布程序的时候,除了Qt运行的Core和Gui等库,对一些特殊的处理还要注意是不是带了相应的插件。这很重要!

时间: 2024-07-31 18:55:54

发布Qt程序时别忘了带上plugins(codecs等)的相关文章

Flash builder发布Air程序时设备配置文件supportedProfiles的配置

1. 发布的程序:需要访问本地进程,那么只能发布为exe程序才可以.   此时supportedProfiles 配置为 extendedDesktop desktop   desktop保证能发布air时不会出错,而访问本地进程则需要extendedDesktop 2. 本地调试:需要访问本地进程   此时supportedProfiles 配置为 extendedDesktop.如果配置为desktop运行会报错,提示没有权限运行本地进程.   为了不至于在发布与调试的时候来回改suppor

ubuntu发布qt程序(二)

使用linuxdeployqt打包qt程序 1.首先,在linux下将程序发布为release版本.并新建一个目录.以test485r为例 2.将release目录下生成的文件拷贝到test485r下 查看 在test485r目录下,运行 linuxdeployqt ./Test485 -appimage 可以看到,爆了一个错误.可能会提示其他的缺少库,但,这不是问题,本 运行 linuxdeployqt ./Test485 -appimage -no-plugins 可以看到,编译成功. 3.

Qt技巧:Win7下打包发布Qt程序(解释的比较清楚,把exe和dll伪装合并成一个文件)

转自:http://www.stardrad.com/blog/qt-5%E7%A8%8B%E5%BA%8F%E5%9C%A8windows%E4%B8%8A%E7%9A%84%E5%8F%91%E5%B8%83/ http://blog.163.com/[email protected]/blog/static/1582209320132291718389/ 最近做了个qt的程序,但是发布程序比较困难,因为qt5有着比较多的dll,如下两篇详述了qt dll依赖库,以及如何查询自己工程所用的d

发布Qt带Widgets程序过程

发布Qt带Widgets程序过程 环境:Qt5.4.2,Qt Creator3.4.1,MinGW4.9 32bit 发布Qt程序过程如下 1.将要发布的程序在release版本下构建. 2.将要release版本下构建生成的exe,复制到一个文件夹下.本例中release生成RegisterLicence.exe,将该文件复制到E:\Qiao\JCGLPlatformRegisterLicence这个目录下. 3.打开Qt 5.4 for Desktop(MinGW4.9),如下图所示的位置.

QT程序在windows下部署发布

转载:http://www.cnblogs.com/Fan_Fan/archive/2010/05/29/1746860.html QT程序在windows下部署发布 以下包括了部分网上收集的,以及qt帮助里的内容(Deploying an Application on Qt/Windows) 首先,打开windows控制台,然后,找到vs安装目录下的bin里,执行 vcvars32.bat 这个脚本.执行完之后,vs需要的所有环境变量就已经设置好了. 我的环境是QT 4.3.3 + mingw

IIS7.0下发布ASP程序报错

操作系统:Windows server 2008 X64 Web: IIS 7.0 任务: 发布Asp程序 首先,要通过OS自带的服务器管理器-->角色-->添加角色-->Web服务器(IIS),选中相对应的选项安装.Win8自带了程序包,比先前系统更方便.在这里安装过程省略了,重点还是解决发布ASP程序的过程中遇到的问题. 其次,发布ASP程序时注意的几个事项: 1)    新建网站时会自动建立相对应的应用程序池,可是先前IIS版是没有这个自动功能的. 2)    应用程序池-->

Linux下同时运行不同版本的qt程序

因项目需要,可能有不同版本的qt程序要运行到同一台机器上,本次实验是qt4.8.5和qt5.3.1开发的程序同时运行在同一台机器上,此机器可以不按照qt的任何版本,当然,两个版本开发的qt与机器的位数必须一样,例如都是32位或者64位. 两个版本的qt的程序我都采用动态编译(静态编译方法请度娘),所以需要把运行程序所需的动态库放到程序可以链接的地方,程序可以链接的动态库路径参见:linux动态库搜索路径.此处直接贴出结论:动态库的搜索路径搜索的先后顺序是: 1.编译目标代码时指定的动态库搜索路径

Windows上发布Qt的可执行程序

这两天抽时间写了个截图工具,在运行release后,想发布下,最后发现点击里面.exe文件报错Qt的库文件缺失,所以学习了下在windows上发布Qt程序的方法,具体操作步骤如下: 1.在Qt Creator下用release跑一遍程序,生成相应的exe文件,也就是可执行文件. 2.在开始菜单搜索Qt,然后运行Qt 5.3 for Desktop (MinGW 4.8 32 bit) (我用的是Qt5.3.2,不同版本,名字不同). 3.打开window是的终端命令模式,然后进入你的exe文件的

C++和QML混合的QT程序调试方法

以前调试只是QML或者只是C++的QT程序很简单,断点打上,直接debug按钮一点,喝一口水,自然就停在断点了. 这次遇到C++和QML混合的程序,把CONFIG+=declarative_debugCONFIG+=qml_debug配置上点了debug就一直等啊等, 就是不弹出主窗口,不知道的, 估计以为电脑卡死了.就算喝完一桶水,也等不到进断点的时候.打开调试信息面板,会看到提示信息 QML Debugger: Waiting for connection on port xxx,一直wai