日期:2014-05-16  浏览次数:20626 次

Qt+MySQL在ARM_Linux下的设置显示中文

一开始按照博文http://www.linuxidc.com/Linux/2011-05/35404.htm的做法,设置ArmLinux,不行,继续找。。。


尝试多种解决方案,但大多数讲的都是Windows或Linux(ubuntu)的做法,说起来容易做起来难,看看我的经历吧。。。


 1、windows下操作比较方便,先实现windows下mysql中文显示

      按照http://www.linuxidc.com/Linux/2011-05/35404.htm的Windows解决方案,我实现的是utf8的字符集设置,没有问题,O(∩_∩)~,不过有点小插曲,就是4个汉字以上就显示乱码,那肯定是数据长度定义短了,修改。。。

mysql>desc table_name;

...

mysql>ALTER TABLE `test`.`acquisitions` CHANGE COLUMN `unit` `unit` VARCHAR(112) NULL DEFAULT NULL  ;

测试

OK!


2、在ARM下,很纠结,明明按照方法做的,

1)在QT程序的main.cpp的main函数中QTextCodec```那三句:

  1. int main(int argc, char *argv[])   
  2. {   
  3.     QApplication a(argc, argv);   
  4.     QTextCodec *codec = QTextCodec::codecForName("UTF-8");   
  5.     QTextCodec::setCodecForCStrings(codec);   
  6.     QTextCodec::setCodecForTr(codec);   
  7.     MainWindow w;   
  8.     w.show();   
  9.     return a.exec();   
  10. }  

2)在你的程序代码设置数据库后添加一句:  db.exec("SET NAMES 'Latin1'"); //直接使用数据库的latin1编码


     偏偏不行,可能是编译的ARM版的MySQL与ubuntu的不太一样,看看它的字符集吧:

    查看MySQL当前的字符集设置:
mysql> show variables like 'character%';                                                            
+--------------------------+----------------------------------------+                               
| Variable_name            | Value                                  |                               
+--------------------------+----------------------------------------+                               
| character_set_client     | gb2312                                 |         &