@@ -116,10 +116,10 @@ MySQL 支持很多种字符编码的方式,比如 UTF-8、GB2312、GBK、BIG5
116
116
117
117
MySQL中的字符集有以下的层次级别:
118
118
119
- * ` server `
120
- * ` database `
121
- * ` table `
122
- * ` column `
119
+ - ` server `
120
+ - ` database `
121
+ - ` table `
122
+ - ` column `
123
123
124
124
它们的优先级可以简单的认为是从上往下依次增大,也即 ` column ` 的优先级会大于 ` table ` 等其余层次的
125
125
@@ -202,9 +202,9 @@ CREATE TABLE t1
202
202
203
203
连接字符集与下面这几个变量息息相关:
204
204
205
- * ` character_set_client ` (描述了客户端发送给服务器的SQL语句使用的是什么字符集)
206
- * ` character_set_connection ` (描述了服务器接收到SQL语句时使用什么字符集进行翻译)
207
- * ` character_set_results ` (描述了服务器返回给客户端的结果使用的是什么字符集)
205
+ - ` character_set_client ` (描述了客户端发送给服务器的SQL语句使用的是什么字符集)
206
+ - ` character_set_connection ` (描述了服务器接收到SQL语句时使用什么字符集进行翻译)
207
+ - ` character_set_results ` (描述了服务器返回给客户端的结果使用的是什么字符集)
208
208
209
209
它们的值可以通过下面的SQL语句查询:
210
210
@@ -222,7 +222,7 @@ SHOW SESSION VARIABLES LIKE 'character\_set\_%';
222
222
223
223
如果要想修改前面提到的几个变量的值,有以下方式:
224
224
225
- * 修改配置文件
225
+ - 修改配置文件
226
226
227
227
比如加上:
228
228
@@ -232,7 +232,7 @@ SHOW SESSION VARIABLES LIKE 'character\_set\_%';
232
232
default-character-set=utf8mb4
233
233
```
234
234
235
- * 使用SQL语句
235
+ - 使用SQL语句
236
236
237
237
比如:
238
238
@@ -250,9 +250,14 @@ set names utf8mb4
250
250
251
251
根据前面的内容,我们知道连接字符集也是会影响我们存储的数据的,而jdbc驱动会影响连接字符集。
252
252
253
- 以 ` DataGrip 2023.1.2 ` 来说,在它配置数据源的高级对话框中,可以看到 ` characterSetResults ` 的默认值是 ` utf8 ` ,在使用 ` jdbc driver 8.0.25 ` 时,连接字符集最后会被设置成 ` utf8mb3 ` 。那么这种情况下emoji表情就会被显示为问号,并且当前版本驱动还不支持把 ` characterSetResults ` 设置为 ` utf8mb4 ` ,不过换成 ` jdbc driver 8.0.29 ` 却是允许的。
253
+ ` mysql-connector-java ` (jdbc驱动)主要通过这几个属性影响连接字符集:
254
254
255
- 具体可以看一下StackOverflow的** [ 这个回答] ( https://stackoverflow.com/questions/54815419/datagrip-mysql-stores-emojis-correctly-but-displays-them-as/76625399#76625399 ) ** 。
255
+ - ` characterEncoding `
256
+ - ` characterSetResults `
257
+
258
+ 以 ` DataGrip 2023.1.2 ` 来说,在它配置数据源的高级对话框中,可以看到 ` characterSetResults ` 的默认值是 ` utf8 ` ,在使用 ` mysql-connector-java 8.0.25 ` 时,连接字符集最后会被设置成 ` utf8mb3 ` 。那么这种情况下emoji表情就会被显示为问号,并且当前版本驱动还不支持把 ` characterSetResults ` 设置为 ` utf8mb4 ` ,不过换成 ` mysql-connector-java driver 8.0.29 ` 却是允许的。
259
+
260
+ 具体可以看一下StackOverflow的 ** [ 这个回答] ( https://stackoverflow.com/questions/54815419/datagrip-mysql-stores-emojis-correctly-but-displays-them-as/76625399#76625399 ) ** 。
256
261
257
262
### UTF-8使用
258
263
0 commit comments