Skip to content

Commit 331082d

Browse files
authored
Update character-set.md
1 parent 548b002 commit 331082d

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

docs/database/character-set.md

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,10 @@ MySQL 支持很多种字符编码的方式,比如 UTF-8、GB2312、GBK、BIG5
116116

117117
MySQL中的字符集有以下的层次级别:
118118

119-
* `server`
120-
* `database`
121-
* `table`
122-
* `column`
119+
- `server`
120+
- `database`
121+
- `table`
122+
- `column`
123123

124124
它们的优先级可以简单的认为是从上往下依次增大,也即 `column` 的优先级会大于 `table` 等其余层次的
125125

@@ -202,9 +202,9 @@ CREATE TABLE t1
202202

203203
连接字符集与下面这几个变量息息相关:
204204

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` (描述了服务器返回给客户端的结果使用的是什么字符集)
208208

209209
它们的值可以通过下面的SQL语句查询:
210210

@@ -222,7 +222,7 @@ SHOW SESSION VARIABLES LIKE 'character\_set\_%';
222222

223223
如果要想修改前面提到的几个变量的值,有以下方式:
224224

225-
* 修改配置文件
225+
- 修改配置文件
226226

227227
比如加上:
228228

@@ -232,7 +232,7 @@ SHOW SESSION VARIABLES LIKE 'character\_set\_%';
232232
default-character-set=utf8mb4
233233
```
234234

235-
* 使用SQL语句
235+
- 使用SQL语句
236236

237237
比如:
238238

@@ -250,9 +250,14 @@ set names utf8mb4
250250

251251
根据前面的内容,我们知道连接字符集也是会影响我们存储的数据的,而jdbc驱动会影响连接字符集。
252252

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驱动)主要通过这几个属性影响连接字符集:
254254

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)**
256261

257262
### UTF-8使用
258263

0 commit comments

Comments
 (0)