2013-06-06 3 views
6

Come configurare Amazon RDS per memorizzare i caratteri cinesi nel modo giusto? Attualmente il testo diventa tutto "????".Configura mysql Amazon RDS per memorizzare i caratteri cinesi

Ho già creato un nuovo gruppo di parametri e impostato il set di caratteri come utf8 e modificato l'istanza. Qui di seguito sono le informazioni dettagli:

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

risposta

13

Dopo la risposta di @Peter Venderberghe per configurare RDS, non riesco ancora a lasciare che memorizzi correttamente i caratteri cinesi.

Infine, ho usato da riga di comando mysql per connettersi a RDS (è possibile utilizzare mysql workbench o altro strumento client che ti piace)

mysql -u USERNAME ppassword -h HOSTNAMEORIP DATABASENAME

nota:

1). ricordare aggiungere la current ip alla sicurezza gruppo in entrata di RDS prima di collegare a RDS

2). è possibile ottenere informazioni correlate (gruppi di sicurezza, USERNAME ecc.) su RDS console, oltre a PASSWORD. PASSWORD dovrebbe essere quello che hai creato per l'istanza. HOSTNAMEORIP è "Endpoint" (senza porta) sulla console.

3). non c'è spazio tra -p e PASSWORD. è esattamente -pPASSWORD.

Dopo il collegamento a MySQL con lo strumento che hai dimestichezza con, è necessario dare alcuni comandi:

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

si consiglia di scrivere uno script per eseguire questa operazione se si dispone di molti tavoli. Tuttavia, non è nell'ambito di questa risposta.

Dopo aver configurato come sopra, si dovrebbe essere in grado di eseguire il rock con caratteri cinesi!

2

Assicurarsi che si sta utilizzando UTF-8 set di caratteri.

Il modo più semplice per impostare i set di caratteri in modo permanente è quello di aggiornare il my.cnf cliente con il seguente:

[client] 
default-character-set=utf8 

Informazioni dettagliate sulla connessione charset potete trovare qui: http://dev.mysql.com/doc/refman/5.5/en/charset-connection.html

Quando si utilizza il funzioni API di MySQL (PHP cliente per esempio) è possibile impostare il set di caratteri connessione inviando la query

SET NAMES utf8 

È possibile configurare Amazon RDS per utilizzare il set di caratteri Utf-8 seguendo questo blog: http://matthew.mceachen.us/blog/howto-configure-an-amazon-rds-instance-to-use-utf-8-925.html

Spero che questo aiuti.

+0

Si prega di vedere il mio aggiornamento. Ancora non ha funzionato dopo aver usato utf8. dovrebbe esserci qualcosa da perdere ... –

+0

Come stai visualizzando i dati memorizzati? Utilizzando lo strumento GUI o utilizzando un browser? Prima di inserire i dati, assicurati di eseguire "Imposta nomi UTF8"; puoi anche consultare questo post http://mandarin.about.com/od/characters/ss/display_chars.htm –

5

Se si utilizza RDS, è possibile impostare il gruppo di parametri per l'istanza mysql.

  1. creare un nuovo gruppo di parametri
  2. Modificare l'istanza db con il nuovo gruppo di parametri
  3. riavviare l'istanza db

Fatto! Dovrebbe essere abbastanza semplice. Vedrai quando arrivi.

+0

Questo è di gran lunga il modo più semplice per farlo. E a mio parere anche il modo corretto. – Anton

+1

Confermo che questo metodo è il più semplice. L'OP non ha fornito dettagli. Quello che ho cambiato è stato "character_set_ *" e "collation_ *". ci sono circa 8 impostazioni, le ho cambiate tutte in "utf8" e "utf8_unicode_ci" – volatilevar