2012-04-14 11 views
8

Dopo aver letto tutti gli argomenti riguardanti le emoji su SO, sono costretto a chiedere aiuto. La domanda sembra essere quasi la stessa: ho ricevuto un'app per iPhone che invia tramite emoji PHP a MySQL DB, posso vedere alcuni simboli sui record, ad esempio "ombrello" e "nuvola" ma altri no (volto arrabbiato, volto sorridente e altro).Emoji su MySQL e PHP: perché alcuni simboli si altri no?

Perché alcuni si e altri no?

  • MySQL fascicolazione: utf8mb_unicode_ci
  • Tabella collazione: utf8mb_unicode_ci
  • Campo, varchar, collazione: utf8mb_unicode_ci

configurazione PHP:

mysql_query("SET CHARACTER SET utf8mb4"); 
    mysql_query("SET NAMES utf8mb4"); 

I simboli non mostrato nel record sono indicati come punto interrogativo "?"

risposta

11

Alcune emoji sono codificate utilizzando 3 byte. Se i tuoi computer supportano le emoji, ecco l'emoji da 3 byte:

☺❤✨❕❔✊✌✋☝☀☔☁⛄⚡ soggiorno➿✂⚽⚾⛳ ♠ ♥ ♣ ♦ 〽☕⛪⛺⛲⛵✈⛽⚠ ♨1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣0⃣ # ⃣⬆⬇⬅➡↗↖↘↙ ◀ ▶ ⏪⏩♿㊙㊗✳✴♈♉♊♋♌♍♎♏♐♑♒♓⛎⭕❌ © ® ™

Il resto è codificato utilizzando 4 byte e non funzionerà se non aggiorni mysql a utf8mb4. Sembra che tu non abbia completamente aggiornato a utf8mb4 in qualche modo.

+0

Grazie mille Jake, cercherò nella tua direzione. Al momento sono abbastanza sicuro di aver convertito i campi obiettivo e il tavolo nella giusta fascicolazione, ma mi sono perso qualcosa. Aggiornerò questo argomento Grazie – Fabrizio

+0

Ho verificato e hai ragione i 3 byte delle emoji sono rappresentati ok. Quello che mi manca è dove ho bisogno di cambiare le regole di confronto. Il campo in cui devo registrare l'emoji ha collation utf8mb4_unicode_ci. La tabella che contiene quel campo ha le regole di confronto utf8mb4_unicode_ci. Nelle Impostazioni generali (phpMyAdmin) vedo che le regole di confronto di MySQL sono utf8_general_ci e quando provo a passare a utf8mb4_unicode_ci sembra tornare automaticamente all'impostazione precedente. Non so se il problema è per questo motivo. Continuerò a cercare. – Fabrizio

+3

@Fabrizio Ho scritto [una guida dettagliata su come aggiornare da 'utf8' a' utf8mb4'] (http://mathiasbynens.be/notes/mysql-utf8mb4) - forse ti aiuta. –

Problemi correlati