O MySQL tem suporte para Unicode, para qualquer dos formatos utf8, utf16 e utf32.
Criei uma base de dados para guardar emoji, tanto no formato utf32 (unicode codepoints), que é o formato com que são representados na especificação do unicode.org, como no formato utf8, com que os emoji aparecem nas páginas web. Eis uma versão simplificada da tabela de carateres, assim como uma manipulação simples:
CREATE TABLE uni ( utf32 CHAR(1) CHARACTER SET utf32, utf8 CHAR(1) CHARACTER SET utf8mb4 ); INSERT INTO uni VALUES (0x4E3D, 0xE4B8BD); INSERT INTO uni VALUES (0x1F600,0xF09F9880); SELECT * FROM uni; SELECT HEX(utf32) AS u32, HEX(utf8) AS u8 FROM uni;
Utilizei o CHARSET utf8mb4, ao invés de utf8 apenas, pois o utf8 usa, no máximo, 3 bytes por caráter, enquanto que o utf8mb4 usa até 4 bytes. O utf8 suporta apenas os carateres do Basic Multilingual Plane (BMP). (ver mais)
O resultado das seleções é o seguinte:
SELECT * FROM uni;
+-------+------+
| utf32 | utf8 |
+-------+------+
| 丽 | 丽 |
|
|
|
+-------+------+
SELECT HEX(utf32) AS u32, HEX(utf8) AS u8 FROM uni;
+----------+----------+
| u32 | u8 |
+----------+----------+
| 00004E3D | E4B8BD |
| 0001F600 | F09F9880 |
+----------+----------+
Deixe um comentário