如果我更改MySQL数据库的字符集,是否需要修改Ruby客户端?

时间:2015-03-16 17:58:32

标签: mysql ruby utf-8

我有一组访问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字符集吗?

1 个答案:

答案 0 :(得分:1)

MySQL管理每个客户端和每列的编码。这意味着,存储文本的每一列都具有编码设置,并且每个连接的客户端也分别具有编码设置。如有必要,文本编码将在这两者之间即时转换。如果客户端发送UTF-8数据以存储在SJIS列中,MySQL将自动进行转换(反之亦然)。

因此,只有在连接到数据库时客户端指定的编码才真正重要。如果您没有在Ruby代码中明确指定它,您将获得隐式默认设置。更改MySQL列的编码不会修改此默认编码。因此:无事可做。