2013-06-06 22 views
6

如何配置Amazon RDS以正確的方式存儲中文字符?目前文字全部變成'????'。配置Amazon RDS mysql以存儲中文字符

我已經創建了新的參數組,並將字符集設置爲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 | 
+----------------------+-----------------+ 

回答

13

在遵循@Peter Venderberghe的配置RDS的答案之後,我仍然不能讓它正確存儲中文字符。

最後,我用mysql命令行連接到RDS(你可以使用MySQL workbench或其他客戶端工具,你喜歡)

的mysql -u USERNAME -Ppassword -h HOSTNAMEORIP DATABASENAME

注:

1)。 請記得在連接到RDS之前將您的current ip添加到RDS安全組入口。

2)。除PASSWORD之外,您還可以在RDS console上獲得相關信息(安全組,USERNAME等)。 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; 

您可能需要編寫一個腳本,如果你有多個表做這個任務。但是,這不在本答案的範圍內。

配置完畢後,您應該可以用中文字體搖滾!

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

我希望這有助於。

+0

請參閱我的更新。使用utf8後仍然沒有得到它的工作。應該錯過什麼... –

+0

如何查看存儲的數據?通過使用GUI工具或使用瀏覽器? 在輸入數據之前,請確保您正在執行「Set names UTF8;」你也可以參考這篇文章http://mandarin.about.com/od/characters/ss/display_chars.htm – 2013-06-07 12:13:17

5

如果您使用的是RDS,則可以爲您的mysql實例設置參數組。

  1. 創建一個新的參數組
  2. 新的參數組修改你的數據庫實例
  3. 重新啓動你的數據庫實例

完成!它應該很直接。當你到達那裏時你會看到。

+0

這是迄今爲止最簡單的方法來做到這一點。在我看來,正確的方式也是如此。 – Anton

+1

我確認這個方法是最簡單的。 OP沒有提供細節。我改變了「character_set_ *」和「collat​​ion_ *」。大約有8個設置,我將它們全部改爲「utf8」和「utf8_unicode_ci」 – volatilevar