mysql之字符編碼問題
問題描述:新建數據庫並新建表插入數據,中文亂碼問題,即便將字符集通過命令行或者mysql客戶端改為utf-8還是亂碼。
問題原因:此問題目前主要出現在Linux為centos7安裝mysql上,主要是通過源碼編譯安裝mysql。通過rpm安裝或者yum安裝目前還沒有發現像這樣的問題。ubuntu16.04通過apt-get install安裝mysql方式也沒有出現這個問題。
比如:菜鳥教程的cmake安裝mysql方式就可能出現這個問題。
安裝鏈接為:http://www.runoob.com/linux/mysql-install-setup.html
解決辦法如下所示:
(1).輸入 SHOW VARIABLES LIKE ‘char%‘; 查看MySQL編碼,有兩個不是utf8
(2).vim/vi /etc/mysql/mysql.conf.d/mysqld.cnf
添加如下內容(記得保存):
lc-messages-dir = /usr/share/mysql(已存在)
character-set-server=utf8(需要添加的)
skip-external-locking(已存在)
(3).vim/vi /etc/mysql/conf.d/mysql.cnf
添加如下內容(記得保存):
default-character-set=utf8
通過配置文件的修改字符集方式,可永久保持數據庫編碼為UTF-8,從而避免亂碼情況
(4).重啟服務/etc/init.d/mysql restart
(5).mysql -uroot -proot 進入mysql 輸入 SHOW VARIABLES LIKE ‘char%‘;
最後顯示結果如下:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
小結,這個問題是我最初接觸MySQL的時候,那個時候我個人還在獨自開發一個博客系統,就出現過這種問題,今天剛好有一個朋友問我,沒想到他遇到的和我當初是一個問題,通過上述解決方案,已經妥善的解決了。所以,特別將其記錄下來,以備其他IT友友們不時之需或者作為解決相關問題的參考。
mysql之字符編碼問題