mysql client編碼 MySQL 編碼

2021-10-18 09:01:30 字數 1490 閱讀 7758

編碼的種類

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端 ...