我有一组访问MySQL数据库的ruby脚本。我需要修改此数据库的字符集,特别是将表从Latin1更改为UTF8。我是否需要修改我的脚本?我看了,我看到我可以为连接设置字符集,这是强制性的吗?
我在思考我不需要做任何调整的犹豫部分是今天数据库的设置。看看如何设置字符集:
mysql> SHOW VARIABLES LIKE "%char%";
+--------------------------+-------------------------------------------+
| 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 |
| character_sets_dir | /rdsdbbin/mysql-5.6.21.R1/share/charsets/ |
+--------------------------+-------------------------------------------+
这不会表明客户端已经设置为使用UTF8字符集吗?
答案 0 :(得分:1)
MySQL管理每个客户端和每列的编码。这意味着,存储文本的每一列都具有编码设置,并且每个连接的客户端也分别具有编码设置。如有必要,文本编码将在这两者之间即时转换。如果客户端发送UTF-8数据以存储在SJIS列中,MySQL将自动进行转换(反之亦然)。
因此,只有在连接到数据库时客户端指定的编码才真正重要。如果您没有在Ruby代码中明确指定它,您将获得隐式默认设置。更改MySQL列的编码不会修改此默认编码。因此:无事可做。