Mysql
 sql >> Database >  >> RDS >> Mysql

Lo schema di codifica emoji definitivo

utf8 di MySQL charset non è effettivamente UTF-8 , è un sottoinsieme di UTF-8 che supporta solo il piano di base (caratteri fino a U+FFFF). La maggior parte delle emoji utilizza punti di codice superiori a U+FFFF. utf8mb4 di MySQL è attuale UTF-8 che può codificare tutti quei punti di codice. Al di fuori di MySQL non esiste "utf8mb4", c'è solo UTF-8. Quindi:

Ancora una volta, niente come "utf8mb4". Le richieste HTTP POST supportano qualsiasi byte grezzo, se il tuo client invia dati con codifica UTF-8 stai bene.

Sì.

Dio no, usa UTF-8 grezzo (utf8mb4 ) per tutto ciò che è santo.

Bene, c'è il tuo problema; canalizzare i tuoi dati attraverso utf8 di MySQL charset scarterà tutti i caratteri sopra U+FFFF. Usa utf8mb4 attraverso MySQL.

Dovrai specificare cosa significa esattamente. Le funzioni JSON di PHP dovrebbero essere in grado di gestire perfettamente qualsiasi punto di codice Unicode, purché sia ​​UTF-8 valido:

echo json_encode('😀');
"\ud83d\ude00"

echo json_decode('"\ud83d\ude00"');
😀