mysql字串亂碼 解決Mysql字串亂碼

2021-10-17 12:59:06 字數 4530 閱讀 3396

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