2013-06-06 5 views
6

Comment configurer Amazon RDS pour stocker les caractères chinois de la bonne manière? Actuellement, le texte devient «????».Configurer Amazon RDS mysql pour stocker les caractères chinois

J'ai déjà créé un nouveau groupe de paramètres et défini un jeu de caractères sous utf8 et modifié l'instance. Voici les informations détaillées:

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 | 
+----------------------+-----------------+ 

Répondre

13

Après avoir suivi la réponse de @Peter Venderberghe pour configurer RDS, je ne peux toujours pas le laisser stocker correctement les caractères chinois.

Enfin, je ligne de commande mysql pour vous connecter à RDS (vous pouvez utiliser MySQL workbench ou tout autre outil de client que vous aimez)

mysql -u USERNAME -Pmot_de_passe -h HostNameOrIP DATABASENAME

note:

1). n'oubliez pas d'ajouter votre current ip au groupe de sécurité entrants de RDS avant de se connecter à RDS

2). vous pouvez obtenir des informations connexes (groupes de sécurité, USERNAME ... etc) sur RDS console en plus de PASSWORD. PASSWORD doit être celui que vous avez créé pour l'instance. HOSTNAMEORIP est "Endpoint" (sans le port) sur la console.

3). il n'y a pas d'espace entre -p et PASSWORD. c'est exactement -pPASSWORD.

Après connexion à MySQL avec l'outil que vous êtes à l'aise avec, vous devez donner quelques commandes:

# 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; 

vous pouvez écrire un script pour effectuer cette tâche si vous avez beaucoup de tables. Cependant, ce n'est pas dans la portée de cette réponse. Après la configuration comme ci-dessus, vous devriez être capable de basculer avec des caractères chinois!

2

Assurez-vous que vous utilisez des caractères UTF-8.

La meilleure façon de définir les jeux de caractères est en permanence à mettre à jour votre my.cnf client avec les éléments suivants:

[client] 
default-character-set=utf8 

informations détaillées sur la connexion charset vous pouvez trouver ici: http://dev.mysql.com/doc/refman/5.5/en/charset-connection.html

Lorsque vous utilisez la Fonctions API MySQL (client PHP par exemple), vous pouvez définir le jeu de caractères de connexion en envoyant la requête

SET NAMES utf8 

Vous pouvez configurer Amazon RDS pour utiliser Utf-8 jeu de caractères en suivant ce blog: http://matthew.mceachen.us/blog/howto-configure-an-amazon-rds-instance-to-use-utf-8-925.html

J'espère que cela aide.

+0

S'il vous plaît voir ma mise à jour. Je n'ai toujours pas travaillé après avoir utilisé utf8. faut-il manquer quelque chose ... –

+0

Comment visualisez-vous les données stockées? En utilisant l'outil GUI ou en utilisant un navigateur? Avant d'entrer des données, assurez-vous que vous exécutez "Définir les noms UTF8;" Vous pouvez également consulter ce post http://mandarin.about.com/od/characters/ss/display_chars.htm –

5

Si vous utilisez RDS, vous pouvez configurer le groupe de paramètres pour votre instance mysql.

  1. Créer un nouveau groupe de paramètres
  2. Modifier votre instance db avec le nouveau groupe de paramètres
  3. Redémarrez votre instance DB

Fait! Cela devrait être assez simple. Vous verrez quand vous y serez.

+0

C'est de loin la façon la plus simple de le faire. Et à mon avis la bonne façon aussi. – Anton

+1

Je confirme que cette méthode est la plus facile. L'OP n'a pas donné de détails. Ce que j'ai changé était "character_set_ *" et "collation_ *". il y a environ 8 réglages, je les ai tous changés en "utf8" et "utf8_unicode_ci" – volatilevar

Questions connexes