Cuando instalamos una base de datos MySQL, por defecto se nos instala con un charset de tipo «latin1» y una collation de tipo «latin1_swedish_ci». Este charset puede ser totalmente válido para nuestros propósitos. Si bien nuestro aplicativo puede tener necesidades de trabajar con otro charset como puede ser UTF8. Para este caso podemos cambiar el charset en la conexión.
Lo primero que haremos será conectarnos a la base de datos.
@ $db = new mysqli(localhost, "usuario", "password", "bd");
if ($db->connect_error)
die('Error de Conexion ('.$db->connect_errno.')'.$db->connect_error);
Una vez conectados a la base de datos podemos comprobar cual es el charset que tiene configurada la base de datos utilizando la función character_set_name().
echo "Utilizando un charset, por defecto, de tipo: ".$db->character_set_name();
Si lo ejecutamos veremos como vemos que la respuesta es «latin1».
Ahora, para cambiar el charset en la conexión que hemos establecido con la base de datos, nos apoyamos en la función set_charset(), la cual recibirá el tipo de charset a utilizar para la conexión como parámetro del método. En nuestro caso vamos a cambiar el charset en la conexión para utilizar ‘utf8’.
$db->set_charset('utf8');
A partir de este momento todo el intercambio de información sobre la base de datos se hace mediante utf8. Si volvemos a ejecutar la función character_set_name() veremos que ya es una conexión de tipo utf8.
Ya hemos visto lo fácil que es cambiar el charset en la conexión a la base de datos. Otra cosa ya será el manipular las cadenas en formato uft8, pero eso será para otro artículo.