A maioria dos emojis do iOS usa pontos de código acima do Plano Multilíngue Básico da tabela Unicode. Por exemplo, 😄 (ROSTO SORRISO COM BOCA ABERTA E OLHOS SORRISOS) está em U+1F604.
Agora, veja http://dev.mysql.com/ doc/refman/5.5/en/charset-unicode.html .
O MySQL antes da versão 5.5 suporta apenas UTF-8 para o BMP, que inclui caracteres entre U+0000 e U+FFFF (ou seja, apenas um subconjunto do UTF-8 real;
utf8
do MySQL não é UTF-8 real). Ele não pode armazenar o caractere no ponto de código U+1F604 ou outros "caracteres altos" semelhantes. MySQL 5.5+ suporta utf8mb4
(UTF-8 real), utf16
e utf32
, que são capazes de codificar esses caracteres. Se você estiver usando o MySQL 5.5+, use um desses conjuntos de caracteres de coluna e verifique se está usando o mesmo conjunto de caracteres para sua codificação de conexão de/para PHP. Se você estiver no MySQL <5.5, terá que usar um BLOB
tipo de coluna. Esse tipo armazena bytes brutos sem se importar com os "caracteres" nele. A desvantagem é que você não poderá pesquisar ou indexar o texto com eficiência.