1. 程式人生 > >centos6.5環境下的web項目mysql編碼方式導致的中文亂碼問題

centos6.5環境下的web項目mysql編碼方式導致的中文亂碼問題

efault filesyste vim 命令 client 編碼方式 mysql編碼 safe files

最近在centos6.5下部署web項目時網頁出現中文亂碼的問題,在排除掉php之後,把問題鎖定在mysql的編碼方式上。

解決方法如下:

首先進入mysql命令行,輸入命令:SHOW VARIABLES LIKE ‘character_set_%’,會出現下面這些信息

+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
mysql的默認編碼方式是latin1而不是utf8
一般來說,有三種處理方法:

1.在創建數據庫的時候默設置編碼格式為utf8,這種方法我之前用過,但沒有解決問題

2.在mysql命令行中通過命令設置編碼格式,比如:

set character_set_client = utf8;

....

這種方法在重啟mysql之後設置會失效

3.最根本的解決方法是直接修改mysql的配置文件,文件路徑是/etc/my.cnf,進入vim編輯界面,進行如下修改:

--在[mysqld]下添加:

default-character-set=utf8

character_set_server=utf8

--在[mysql]下添加:

default-character-set=utf8

--在[mysql.server]下添加:

default-character-set=utf8

--在[mysqld_safe]下添加:

default-character-set=utf8
--在[client]下添加:
default-character-set=utf8

重啟mysqld服務,再進入mysql命令行輸入SHOW VARIABLES LIKE ‘character_set_%’,這時配置已經生效

+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+

另外,原數據庫需要刪除再重新導入數據庫文件,打開瀏覽器測試,亂碼問題解決

centos6.5環境下的web項目mysql編碼方式導致的中文亂碼問題