2013-01-23 16 views
6

Voglio salvare Emoji nel database MySql e mi rendo conto che tre byte Emoji è stato salvato correttamente nel database, ma le emoji a 4 byte sono state salvate come punti interrogativi. Sembra che abbia completamente convertito utf8 in utf8mb4, ma non so cosa manchi esattamente qui. La mia versione di MySQL è 5.5.29, quando faccio un SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; in guscio MySql, si evidenzia quanto segue:phpMyAdmin mysql ha salvato Emoji come Punto interrogativo

+--------------------------+--------------------+ 
| Variable_name   | Value    | 
+--------------------------+--------------------+ 
| character_set_client  | utf8mb4   | 
| character_set_connection | utf8mb4   | 
| character_set_database | utf8mb4   | 
| character_set_filesystem | binary    | 
| character_set_results | utf8mb4   | 
| character_set_server  | utf8mb4   | 
| character_set_system  | utf8    | 
| collation_connection  | utf8mb4_unicode_ci | 
| collation_database  | utf8mb4_unicode_ci | 
| collation_server   | utf8mb4_unicode_ci | 
+--------------------------+--------------------+ 

Ora, a scopo di test, ho solo 1 database con 1 tabella creata per testare risparmio emoji. Ho creato il database tramite phpMyAdmin, e ha creato la tabella con MySql shell:

CREATE TABLE `test_emojis` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 

e ancora non funziona (ancora punti interrogativi).

Tuttavia, ho trovato qualcosa di interessante, vedo punti interrogativi in ​​phpMyAdmin, ma posso vedere l'icona emoji correttamente nella shell Mysql se digito select * da test_emoji; qualche idea?

Qualcuno può aiutare per favore?

Grazie

+0

Sei sicuro che il tuo client (phpMyAdmin) si connette effettivamente al server usando il set di caratteri utf8mb4? Ripeti la query sopra da phpMyAdmin –

+1

Ciao, Michel, grazie per il tuo promemoria, ho capito anche io, il mio myphpadmin sta ancora usando utf8, ecco perché non riesco a vederlo sul client phpmyadmin, ma in grado di vederlo sulla shell MySQL . Tuttavia, sto facendo una nuova domanda qui. Si prega di leggere questo post: http://stackoverflow.com/questions/14488503/ios-cannot-decode-emoji-unicode-in-json-format-correctly-and-emoji-icons-are-di – user2002692

risposta

3

phpMyAdmin è hardcoded utf8 charset modo che avrebbe dovuto modificare è il codice per cambiare questo. Per le versioni future è stato risolto in fb30c14 (questo mostra anche dove cambiare questi valori).

2

Aggiorna phpMyAdmin a> = 4.3.9 e problema risolto.

Problemi correlati