En varias ocasiones, he encontrado que tuve que almacenar y administrar caracteres en UTF8MB4.
De hecho, ha sido necesario para mí en estas 2 ocasiones:
- En el ejemplo, hice para recopilar los mensajes de una cuenta de correo electrónico y almacenarlos en tablas de base de datos. Ahora está muy de moda, o en el título o contenido, ponen Emoji (pequeñas imágenes) y estos suelen ser caracteres que usan UTF8MB4.
- He hecho un complemento para que «Emoji» se pueda incluir en un campo de área de texto y estos «Emoji» son caracteres en UTF8MB4, por defecto, utilizando PHPRunner, no pude guardar estos datos en la base de datos.
Bueno, he resuelto el problema y quiero compartirlo con vosotros. Para resolverlo, el campo del destinatario de este contenido debe especificarse con el conjunto de caracteres de UTF8MB4.
En el evento «after application initialized» de nuestra aplicación, debemos poner estas 2 líneas:
$sql = "SET character_set_results = 'utf8mb4', character_set_client = 'utf8mb4', character_set_connection = 'utf8mb4', character_set_database = 'utf8mb4', character_set_server = 'utf8mb4'";
DB::Exec($sql);
Y esto es todo, el resto de tu aplicación no tienes que tener nada especial en cuenta.