centos6.5環境下的web項目mysql編碼方式導致的中文亂碼問題
最近在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編碼方式導致的中文亂碼問題