1 # 字符集和字元序2
3 字符集(character set):定義了字元以及字元編碼。4
5 字元序(collation):定義了字元的比較規則。6
7 mysql支援多種字符集 與 字元序。8
9 -乙個字符集對應至少一種字元序(一般是1對多)。10
11 -兩個不同的字符集不能有相同的字元序。12
13 -每個字符集都有預設的字元序。14 1. 檢視字符集15
16 show character set where charset="utf8";17
18 ![img](clip_image001.png)19
20 2. 檢視字元序21
22 show collation where charset="utf8";23
24 ![img](clip_image002.png)25
26 3. 檢視當前資料庫的字符集27
28 show variables like "%character%";29
30 ![img](clip_image003.png)31
32 # 字符集設定33
34 ## 各級別字符集35
36 ### 伺服器預設字符集37
38 1. 用途:39
40 預設的內部字符集。建立資料庫或表時,若未指定庫或表的字符集、字元序,使用該伺服器的伺服器預設字符集。41
42 2. 查詢server字符集、字元序43
44 show variables like "character_set_server";45
46 show variables like "collation_server";47
48 3. 設定server字符集49
50 *永久生效,需要重啟mysql服務生效。51
52 修改引數檔案my.cnf53
54 [mysqld]55
56 character_set_server=utf857
58 --影響引數:character_set_server 和 character_set_database59
60 --注意:修改後要重啟資料庫才能生效。61
62 *臨時生效,重啟mysql服務後丟失。63
64 mysql>set global character_set_server=utf8;65
66 ### 資料庫字符集67
68 1. 用途:指定資料庫級別的字符集。不同資料庫可以使用不同字符集。69
70 2. 檢視字符集:71
72 use iungopnt;73
74 select @@character_set_database, @@collation_database;75
76 ![打不開](clip_image004.png)77
78 3. 設定字符集:79
80 建立資料庫時設定。81
82 create database iungopnt default character set utf8;83
84 若未指定字符集,使用character_set_server。85
86 ### 表字符集87
88 1. 用途:指定表的字符集。不同表可以使用不同字符集。89
90 2. 檢視字符集:91
92 show table status from iungopnt;93
94 ![打不開](clip_image006.jpg)95
96 3. 設定字符集:97
98 建立表時設定。99
100 use iungopnt;101
102 drop table if exists `sysconfig`;103
104 create table `sysconfig` (105
106 `id` int not null auto_increment,107
108 `paramid` varchar(255) not null ,109
110 `paramname` varchar(255) not null ,111
112 `subparamid` varchar(255) not null ,113
114 `value` varchar(500) not null ,115
116 primary key (`id`)117
120 ) auto_increment=1000 default charset=utf8;121
122 若未指定字符集,使用資料庫字符集。123
124 # 列字符集125
126 暫不考慮。127
128 ##字符集系統變數129
130 -character_set_server:預設的內部操作字符集131
134 -character_set_connection:連線層字符集135
136 -character_set_results:查詢結果字符集137
138 -character_set_database:當前選中資料庫的預設字符集139
140 -character_set_system:系統元資料(欄位名等)字符集141
142 -字符集指定143
144 1. 編譯時指定145
146 2. 配置檔案my.cnf中指定:147
148 [mysqld]149
150 character_set_server=utf8151
152 --影響引數:character_set_server 和 character_set_database153
154 --注意:修改後要重啟資料庫才能生效。155
156 [client]157
158 default-character-set=utf8159
160 --影響引數:character_set_client,character_set_connection 和character_set_results。161
162 --注意:修改後無需重啟資料庫。163
164 3. 啟動時指定:165
166 a) ./mysqld --character-set-server=utf8 &
168 --影響引數:character_set_server 和 character_set_database169
170 b) mysql -uroot -pmysql --default-character-set=utf8171
172 --影響引數:set character_set_client,set character_set_connection,setcharacter_set_results。173
174 4. sql臨時指定:175
176 a) 分別指定177
178 mysql> set character_set_client =utf8;179
180 mysql> set character_set_connection =utf8;181
182 mysql> set character_set_database =utf8;183
184 mysql> set character_set_results =utf8;185
186 mysql> set character_set_server =utf8;()187
188 b) mysql客戶端使用:setnames utf8;189
190 等價於:191
192 set character_set_client=utf8;193
194 set character_set_connection=utf8;195
196 set character_set_results=utf8;197
198 c) set character setutf8;199
200 等價於:201
202 set character_set_client=utf8;203
204 set character_set_results=utf8;205
206 set collation_connection=@@collation_database;207
208 # 字符集轉換209
210 1. mysql server收到請求時將請求資料從character_set_client轉換為character_set_connection;211
212 2. 進行內部操作前將請求資料從character_set_connection轉換為內部操作字符集,其確定方法如下:213 使用每個資料字段的character set設定值;214 若上述值不存在,則使用對應資料表的default character set設定值(mysql擴充套件,非sql標準);215 若上述值不存在,則使用對應資料庫的default character set設定值;216 若上述值不存在,則使用character_set_server設定值。217
218 3. 將操作結果從內部操作字符集轉換為character_set_results。219
220 4. 亂碼原因:221
222 字符集轉換過程中造成資訊丟失。223
224 大字符集(utf8)往小字符集(gb2312)轉換會造成資訊丟失,反之不會。
解決 VS Code輸出字串亂碼問題
首先明白vscode其實呼叫的是cmd,我們需要修改的是cmd的編碼格式,我們可以使用chcp命令檢視當前編碼格式。查了網上的方法,有的只能修改一次,怎麼固定編碼格式呢。在登錄檔中增加乙個字串值就可以固定cmd的編碼格式了。win r鍵 調出 在登錄檔中找到目錄 計算機 hkey local mac...
mysql 可變字串 MySQL 字串型別
字串型 set enum blob text varchar char。1.char 字元 格式 char m 固定長度 m 表示嚴格限定的長度。char 5 varchar 5 5位元組1位元組 需要乙個位元組,儲存字串的總長度 abc abcde abcdef 超出限制,插入不成功 插入不成功 ...
mysql字串邊界 mysql字串函式
mysql 字串擷取函式 ord cast left right substring substring index mid substr 其中,mid substr 等價於substring 函式,substring 的功能非常強大和靈活。ord 用於返回字串第乙個字元的ascii碼。cast 1...