6

如何配置 Amazon RDS 以正确方式存储汉字?目前文本全部变为'????'。

我已经创建了新的参数组并将字符集设置为 utf8 并修改了实例。以下是详细信息:

mysql> show variables like '%char%';
+--------------------------+-------------------------------------------+
| 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.5.27.R1/share/charsets/ |
+--------------------------+-------------------------------------------+


+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+
4

3 回答 3

14

在按照@Peter Venderberghe 的回答配置RDS 之后,我仍然不能让它正确存储中文字符。

最后,我使用mysql命令行连接RDS(你可以使用mysql workbench或者其他你喜欢的客户端工具)

mysql -u 用户名 -pPASSWORD -h HOSTNAMEORIP DATABASENAME

笔记:

1)。记得在连接到 RDS 之前将你当前的 ip添加到 RDS 的安全组入站

2)。您可以在RDS 控制台上获取相关信息(安全组,USERNAME...等)。应该是您为实例创建的那个。是控制台上的“端点”(没有端口)。PASSWORDPASSWORDHOSTNAMEORIP

3)。-p 和 PASSWORD 之间没有空格。正是-pPASSWORD

使用您熟悉的工具连接到 mysql 后,您需要给它一些命令:

# set character set and collation for database
mysql> alter database DATABASENAME CHARACTER SET utf8 COLLATE utf8_unicode_ci;
--------
# set character set and collation for new records in a table
mysql> ALTER TABLE TABLENAME CHARACTER SET utf8 COLLATE utf8_unicode_ci;
# set character set and collation for existing records in a table
mysql> ALTER TABLE TABLENAME CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; 

如果您有很多表,您可能需要编写一个脚本来执行此任务。但是,它不在此答案的范围内。

如上配置后,你应该可以用汉字摇滚了!

于 2013-08-18T15:33:39.257 回答
5

如果您使用的是 RDS,则可以为您的 mysql 实例设置参数组。

  1. 创建一个新的参数组
  2. 使用新参数组修改您的数据库实例
  3. 重启你的数据库实例

完毕!它应该很简单。你到了那里就会看到。

于 2014-04-08T14:26:16.900 回答
2

确保您使用的是 UTF-8 字符集。

永久设置字符集的最简单方法是使用以下内容更新您的客户端 my.cnf:

[client]
default-character-set=utf8

您可以在此处找到有关连接字符集的详细信息:http: //dev.mysql.com/doc/refman/5.5/en/charset-connection.html

使用 MySQL API 函数(例如 PHP 客户端)时,您可以通过发送查询来设置连接字符集

SET NAMES utf8

您可以按照以下博客将 Amazon RDS 配置为使用 Utf-8 字符集:http: //matthew.mceachen.us/blog/howto-configure-an-amazon-rds-instance-to-use-utf-8-925 .html

我希望这有帮助。

于 2013-06-06T05:02:33.747 回答