Qt+MySQL在ARM_Linux下的設定顯示中文

來源:互聯網
上載者:User

一開始按照博文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                                 |                               
| character_set_connection | gb2312                                 |                               
| character_set_database   | gb2312                                 |                               
| character_set_filesystem | binary                                 |                               
| character_set_results    | gb2312                                 |                               
| character_set_server     | gb2312                                 |                               
| character_set_system     | utf8                                   |                               
| character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |                               
+--------------------------+----------------------------------------+                               
8 rows in set (0.00 sec) 

   原來字元集預設的不是latin1,那咋麼辦?看一個博文這樣說,

。。。。。。。。。。。。。。。。。。。。。。。。。。。引用部分。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

如果character_set_client、character_set_connection、 character_set_results之前被修改成了utf8,

就要在linux下修改my.cnf檔案(其它被修改成utf8好像沒關係),該檔案位置一般是 /etc/mysql/my.cnf

開啟my.cnf後,

找到用戶端配置[client] 在下面添加
default-character-set=latin1 設定預設字元集為latin1
在找到[mysqld] 添加
default-character-set=latin1 預設字元集為latin1
init_connect='SET NAMES latin1' (設定串連mysql資料庫時使用latin1編碼,以讓mysql資料庫為latin1運行)

修改好後,重新啟動mysql 即可,查詢一下show variables like 'character%';是否與 圖一 一樣。

。。。。。。。。。。。。。。。。。。。。。。。end。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

設定後,依然不行。。。。苦悶ing

思變:既然不行,那就全部按照utf8來設定試試,那如何設定呢?

    嘗試1、在命令列下set  character_set_client =utf8。。。其他依次設定,設定表字元集alter TABLE user_info DEFAULT CHARACTER SET utf8;測試,不行,再進命令列,查看字元集,mysql> show variables like 'character%';                                                            
+--------------------------+----------------------------------------+                               
| Variable_name            | Value                                  |                               
+--------------------------+----------------------------------------+                               
| character_set_client     | gb2312                                 |                               
| character_set_connection | gb2312                                 |                               
| character_set_database   | gb2312                                 |                               
| character_set_filesystem | binary                                 |                               
| character_set_results    | gb2312                                 |                               
| character_set_server     | gb2312                                 |                               
| character_set_system     | utf8                                   |                               
| character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |                               
+--------------------------+----------------------------------------+                               
8 rows in set (0.00 sec)
居然沒有變。。。。

   嘗試2、執行mysql>set NAMES ‘utf8’;然後再執行查看字元集

mysql> set NAMES 'utf8';                                                                            
Query OK, 0 rows affected (0.00 sec)                                                                
                                                                                                    
mysql> show variables like 'character%';                                                            
+--------------------------+----------------------------------------+                               
| Variable_name            | Value                                  |                               
+--------------------------+----------------------------------------+                               
| character_set_client     | utf8                                   |                               
| character_set_connection | utf8                                   |                               
| character_set_database   | gb2312                                 |                               
| character_set_filesystem | binary                                 |                               
| character_set_results    | utf8                                   |                               
| character_set_server     | gb2312                                 |                               
| character_set_system     | utf8                                   |                               
| character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |                               
+--------------------------+----------------------------------------+                               
8 rows in set (0.00 sec)

變化的 是character_set_client、character_set_connection、 character_set_results,能不能試試全部修改,但是推出後並沒有儲存,怎麼辦?具體儲存方法沒有找到,也不知道為什麼執行了,下次再進入資料庫,又恢複了原來的字元集,我們可以換種思路,在每次運行時,都全部設定,

既然在資料庫連接成功後,執行了

    db.exec("SET NAMES 'utf8'");

何嘗不再執行修改
    db.exec("set   character_set_database =utf8");
    db.exec("set   character_set_server =utf8");

這樣各變數的字元集全部設定了,再不行,再找方法,就要不厭其煩的嘗試,才可以找到答案,這可能就是笨鳥先飛的法寶吧~呵呵,廢話了。。。

這樣設定,成功了!!!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.