个人遇到的QT中文编码问题

        最近在用QT完成一个程序时遇到一个困扰了我很久的问题,首先说明一下,在本机上的编译环境为QT Creator+ubuntu。编译完成后copy到其他机器的ubuntu系统中运行(不管装了QT环境没有,现象都一样),结果双击无任何反应,到命令行下运行,提示segmentation default.
        刚开始真是一头雾水,不知道从何处下手去找问题,无奈,只得用qDebug一步一步进行提示,才找到点眉目,发现了一些规律,就是当运行到fromUnicode()或是toUnicode()时就会出现以上提示,例如:

        由于在程序中没有对codec的值就以判断,codec的值为0时当然就出错了。(刚开始还不知道这个问题,也是找了一些相关的资料才发现的。)出错原因也略知一二了,那就是ubuntu中默认没有提供对中文编码(包括GBK,GB18030,GB2312都试过了)的支持,即使QT中有中文编码的头文件,程序也不会主动去找,当然在本机中编译运行的时候可能就找到了中文编码的头文件或库(这是我的猜想,具体我也还没弄明白,疑惑中~).

        原因找到了,但仍然不知道怎么去解决,知道在网上找到这样一篇文章,受到了很大启发:
http://hi.baidu.com/gpsplus/blog/item/1d5354a7d843029cd1435894.html

我的解决方法如下:
1.在qt安装目录qt/src/plugins/codecs/cn下找到qgb18030codec.h和qgb18030codec.cpp拷贝到程序目录下
2.在程序中加入

以上有错误的两句就变成


这样就能找到中文编码了,不会出现以上错误提示了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值