關於亂碼,這是個糟糕的問題!涉及到不少地方php
解決思路:程序所涉及的環境字符集不一致致使mysql
mysql出現亂碼通常是mysql數據庫內部的字符集出現問題sql
爲了防止出現一些後續的問題數據庫
在建庫的時候就要設置默認字符集服務器
CREATE DATABASE 庫名 DEFAULT CHARSET=UTF8;
其餘的一些操做post
查看mysql各個地方的字符集設置狀況編碼
SHOW VARIABLES LIKE 'character%';
順便記錄一下mysql數據庫 各個字符集的做用操作系統
character_set_clientcode
解析客戶端sql語句的字符集server
character_set_connection
一般與character_set_client保持一致,當進入查詢時,會將sql語句 由character_set_client轉變爲 character_set_connection字符集
character_set_database
新建數據庫的默認字符集,一般建庫的時候就指定一下默認的字符集
默認數據庫的字符集決定了新建表的默認字符集
默認表的字符集又決定了字段的默認字符集
換句話說,若是咱們建庫指定了默認字符集,建表的時候就不用去指定默認字符集了
若是建表,建庫都不指定默認字符集,默認就會用character_set_database初始的字符集去建表,
而一般狀況下,初始的character_set_database字符集是西歐的字符集,對英文友好,對中文不友好!
character_set_filesystem
文件系統字符集編碼,主要用於解析文件名稱的字符串字面值(默認就好)
character_set_results
返回給客戶端的查詢結果或者錯誤提示的字符集
character_set_server
服務器端的默認編碼字符集
character_set_system
mysqlsever儲存元數據的編碼字符集(默認就好)
character_set_dir
mysql字符集編碼儲存的文件夾
若是須要改動某個字符集,能夠用如下相似的語句
SET character_set_server = utf8;
若是以上都改了,仍是出現問題,那說明mysql內部的字符集是沒有問題的,剩下的應該就是外部環境的字符集的問題
網上找了好久,發現多是操做系統字符集的問題
打開cmd 輸入 chcp 查看活動代碼頁
win10默認用的GBK字符集,修改字符集爲 UTF-8
修改重啓後,查看字符活動代碼頁
這時候再次POST提交表單,導入數據庫中文就能夠正常顯示了!