我即将将数据库的编码从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 |
+--------------------------+-------------------+```发布于 2019-05-11 19:15:08
那是Ώπα?这就是UTF-8 (外界所称的)、utf8mb4 (MySQL的等价物)或utf8 (MySQL的部分UTF-8实现)中的解释。
在latin1中,它不会很好地工作。
客户端中的编码和数据库中列的编码不必相同。但是,客户端中的希腊语不能被塞进表中的latin1中,因此出现了错误消息。
ALTER TABLE table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;所做的是将该表中的所有文本列更改为utf8 8编码,并从当前使用的任何编码(想必是latin1)中转换。这对于西欧字符来说很好,所有这些字符都存在于latin1和utf8中(具有不同的编码)。
为了处理Emoji和一些中国人,你可以选择utf8mb4。
ALTER TABLE table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_unicode_520_ci;https://stackoverflow.com/questions/56061967
复制相似问题