首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >连接字符串中的characterEncoding是否设置了值的存储方式?

连接字符串中的characterEncoding是否设置了值的存储方式?
EN

Stack Overflow用户
提问于 2019-05-09 14:42:57
回答 1查看 254关注 0票数 0

我即将将数据库的编码从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的更改的影响吗?

代码语言:javascript
复制
+--------------------------+-------------------+
| 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 |
+--------------------------+-------------------+```
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

代码语言:javascript
复制
ALTER TABLE table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_unicode_520_ci;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56061967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档