編碼的種類
1) character_set_client : mysql server 假定client傳輸資料過來的時候的編碼
2) character_set_connection: server收到sql語句時,將其轉換成的編碼
3) character_set_results: server在返回資料給客戶端時,會將資料轉成這個編碼
4) character_set_system: 元資料編碼(表名, 列名等)
5) character_set_server, character_set_database, character_set_table, character_set_column: mysql預設的 伺服器/資料庫/表/列 編碼, 優先順序由低到高, 就是表編碼可覆蓋庫編碼,列編碼可覆蓋表編碼
校對集種類
collation是字元的排序規則,就是字元之間比較大小的規則,例如utf8_general_ci表示的就是按照utf8編碼且忽略大小寫來排序,mysql在排序時會將兩個比較字元先轉化為相同的編碼,如果出現編碼不相容,則會丟擲錯誤.
關於 set names 和 set character set
set names 'encoding' 是設定以上編碼的命令,它影響的編碼包括:character_set_client, character_set_connection, character_set_results, collation_connection
set character set 'encoding' 影響的編碼包括:character_set_client, character_set_results
簡而言之 set names 會影響server的編碼和解碼, 而 set character set 只會影響server的解碼
如果說我們使用latin1開啟乙個連線,然後將set names utf8,則會出現問題,因為這會使得伺服器認為客戶端傳入資料是utf8編碼,而實際上使用的確實latin1
所以最好的解決策略是同意所有的解碼和編碼規則
下面是mysql編碼修改的方法
在[client]節點下新增
default-character-set=utf8
在[mysqld]節點下新增
character-set-server=utf8
collation-server=utf8_general_ci
重啟mysql服務
service mysql restart 即可
進入mysql,檢視編碼
show variables like "character%";
可以看到已經改好
My97DatePicker 亂碼 編碼
發現 上的時間控制項亂碼了.檢視了下,是使用的第三方控制項 my97datepicker 解決方案第一步 開啟瀏覽器.搜出來解決方案涉及的2個檔案 config.js zh cn.js 在瀏覽器上開啟對應的js資源路徑 果然是亂碼.將該js檔案編碼型別修改為 utf 8 具體步驟 將zh cn.js...
mysql client常見error總結
mysql 客戶端連線伺服器,客戶端報對應的錯誤號總結 1.error 104 mysql longxibendi dba u abcd00.longxibendi perror 104 os error code 104 connection reset by peer 這個是由於server端 ...
mysql client常見error總結
mysql 客戶端連線伺服器,客戶端報對應的錯誤號總結 1.error 104 mysql longxibendi dba u abcd00.longxibendi perror 104 os error code 104 connection reset by peer 這個是由於server端 ...