所以我的目标是将所有字符集和排序规则设置为utf8
和utf8_unicode_ci
。
我正在使用AWS RDS来托管MySQL服务器。
我已在RDS的参数组中将collation_connection variable
设置为utf8_unicode_ci
。
然后我重新启动了我的RDS,当进入MySQL控制台时,它显示以下变量值。
mysql> show variables like "%character%";show variables like "%collation%";
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /rdsdbbin/mysql-5.6.22.R1/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.01 sec)
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
我不确定为什么collation_connection
设置为utf8_general_ci
答案 0 :(得分:1)
您在此处看到的变量是当前客户会话的变量:
my-component
因此,当您在连接的客户端上启动连接时,需要运行以下命令:
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
答案 1 :(得分:0)
collation_connection
变量是由客户端设置的;可以使用不同的设置来编译客户端-在这种情况下,utf8
的默认排序规则似乎是utf8_general_ci
。
问题是MySQL客户端允许用户设置字符集(default-character-set
),但不允许设置排序规则。如果需要特定的排序规则,则无法直接解决。
在这种情况下,除了运行时更改外,其他操作是将服务器character-set-client-handshake
变量设置为关闭(0
)。
这将跳过与客户端进行的字符集协商(并暗含排序规则)协商,并将在任何客户端连接上强加服务器字符集/排序规则设置。
答案 2 :(得分:-1)
In the Parameter group, set the variable init_connect to
SET COLLATION_CONNECTION=utf8_unicode_ci
答案 3 :(得分:-2)
如果您的任何现有表格具有不同的CHARACTER SET
或COLLATION
,则需要进行转换;见ALTER TABLE ... CONVERT TO ...
。
如果您的代码未连接为utf8
,则需要更改。细节是特定于语言的(Java vs PHP vs ...)。
而且,如果你正在做html页面,他们需要从
开始<meta charset=UTF-8>
只要你正在进行这项练习,你应该一路走下去,这样你就可以处理所有中文和表情符号:utf8mb4
和utf8mb4_unicode_520_ci
。