1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

Update character-set.md

This commit is contained in:
paigeman 2023-07-07 10:59:19 +08:00 committed by GitHub
parent 548b002fbf
commit 331082d8f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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