如何配置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 |
+----------------------+-----------------+
答案 0 :(得分:13)
按照@Peter Venderberghe的配置RDS的答案后,我仍然不能让它正确存储中文字符。
最后,我使用mysql命令行连接到RDS(你可以使用mysql workbench或其他你喜欢的客户端工具)
mysql -u USERNAME -pPASSWORD -h HOSTNAMEORIP DATABASENAME
请注意:
1)。 请记住在连接到RDS之前将current ip添加到RDS的安全组入站
2)。除了USERNAME
之外,您还可以在RDS console上获取相关信息(安全组PASSWORD
...等)。 PASSWORD
应该是您为实例创建的那个。 HOSTNAMEORIP
是控制台上的“端点”(没有端口)。
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;
如果你有很多表,你可能想写一个脚本来完成这个任务。但是,这不在答案的范围内。
完成上述配置后,您应该能够使用汉字摇滚!
答案 1 :(得分:5)
如果您使用的是RDS,则可以为mysql实例设置参数组。
完成!它应该非常简单。你会什么时候到达那里。
答案 2 :(得分: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
我希望这会有所帮助。