MySQL插入顯示漢字出現亂碼問題的解決

來源:互聯網
上載者:User

 

前段時間使用vc+mysql做東西,中途發現一插入漢字的話就出現亂碼,網上找了很多資料,像在連接字串的地方設定字元集,發現都沒有解決問題,後來研究了一下mysql字元集的結構,終於解決問題。

MySQL服務端不加任何參數啟動時,如下面所示(下面中同樣顯示了我的mysql版本):

 

 

 

我的字元集配置中character_set_database和character_set_server為utf8,這是由於我本身的Mysql設定檔my.ini中設定的為utf8的原因造成的:

 

 

 

 


此時,可以發現,寫入的資料是亂碼(我這個裡面顯示為空白,但資料存在1行);


然後,更改伺服器啟動時的字元集,或是修改設定檔my.ini中的字元集

 

此時,可以發現原來寫入的資料仍然不能正常顯示:

然後,插入漢字字元,顯示仍然為亂碼:


通過如上測試可以發現,如果只在用戶端設定character_set_results那麼不管伺服器端是什麼字元集時建立、插入漢字的表都顯示不正確。如果再設定character_set_client,仍然不能影響由於設定character_set_results所產生的影響。

設定character_set_results


設定character_set_client


然後,如果再設定character_set_connection,不會影響已經建立和插入的表,在建立立、插入漢字的表就能正確顯示

原有表不發生變化


建立插入表和漢字字元,顯示正常:


我們可以查看一下此時各個表的表結構及其他們的字元集:

 

 


總結一下,如果你的插入或是顯示字元出現亂碼,那麼多半是由於你的資料庫字元集出現了問題。如果要想正確顯示漢字,必須同時設定character_set_client和
character_set_connection參數和伺服器端指定字元集保持一致,才能正確插入、顯示。

如果只是要顯示以前帶字元集正確插入漢字的表,可以只在用戶端指定character_set_results
就夠了。

附可以正確顯示漢字字元的的mysql

字元集配置供參考:
[client]<br />default-character-set=gbk<br />port=3306<br />[server]<br />default-character-set=gbk<br />port=3306<br />[mysql]<br />default-character-set=gbk<br />[mysqld]<br />port=3306<br />basedir=C:/Program Files/MySQL/mysql/<br />datadir=C:/Program Files/MySQL/mysql/data/<br />default-character-set=gbk<br />default-storage-engine=INNODB 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.