连接字符串中的 characterEncoding 是否设置值的存储方式?
Does characterEncoding in connection string set how values is stored?
我要将数据库的编码从 latin1 更改为 utf8mb4。
由于隐私限制,我不知道要转换的数据库包含什么。我担心 运行 到 SQL 以下,现有数据可能会被更改。
ALTER TABLE table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
但是,来自 grails 应用程序的连接字符串包含 useUnicode=true&characterEncoding=UTF-8,这是否意味着即使 latin1_swedish_ci 用于列,已保存的实际值是 UTF-8 编码的吗?
并且由于此值是 UTF-8 编码的,因此数据不会因从 latin1 到 utf8mb4 的更改而受到影响吗?
+--------------------------+-------------------+
| Variable_name | Value |
+--------------------------+-------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+--------------------------+-------------------+```
那是Ώπα
?这就是UTF-8
(外界这么称呼它)、utf8mb4
(MySQL的等价物)或utf8
(MySQL的部分实现)中的解释UTF-8).
在 latin1
中效果不佳。
客户端中的编码和数据库中列的编码不必相同。然而,客户端中的 Greek 不能被塞入 table 中的 latin1,因此出现错误消息。
ALTER TABLE table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
所做的是将 table 中的所有文本列更改为 utf8 编码 和 从当前使用的任何编码转换(大概是 latin1).这对于西欧字符来说很好,所有这些字符都存在于 latin1 和 utf8 中(具有不同的编码)。
要处理Emoji和一些中文,你还不如去utf8mb4
:
ALTER TABLE table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_unicode_520_ci;
我要将数据库的编码从 latin1 更改为 utf8mb4。 由于隐私限制,我不知道要转换的数据库包含什么。我担心 运行 到 SQL 以下,现有数据可能会被更改。
ALTER TABLE table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
但是,来自 grails 应用程序的连接字符串包含 useUnicode=true&characterEncoding=UTF-8,这是否意味着即使 latin1_swedish_ci 用于列,已保存的实际值是 UTF-8 编码的吗?
并且由于此值是 UTF-8 编码的,因此数据不会因从 latin1 到 utf8mb4 的更改而受到影响吗?
+--------------------------+-------------------+
| Variable_name | Value |
+--------------------------+-------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+--------------------------+-------------------+```
那是Ώπα
?这就是UTF-8
(外界这么称呼它)、utf8mb4
(MySQL的等价物)或utf8
(MySQL的部分实现)中的解释UTF-8).
在 latin1
中效果不佳。
客户端中的编码和数据库中列的编码不必相同。然而,客户端中的 Greek 不能被塞入 table 中的 latin1,因此出现错误消息。
ALTER TABLE table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
所做的是将 table 中的所有文本列更改为 utf8 编码 和 从当前使用的任何编码转换(大概是 latin1).这对于西欧字符来说很好,所有这些字符都存在于 latin1 和 utf8 中(具有不同的编码)。
要处理Emoji和一些中文,你还不如去utf8mb4
:
ALTER TABLE table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_unicode_520_ci;