Le batallé un rato con esto y decidí publicarlo.
Los weyes de MySQL/Oracle cambian esto cada mes (no es cierto). Estos son los pasos a seguir para hacer todas tus conexiones UTF-8 con MySQL.
Si eres dueño del servidor (y recuerdas el password de root), solo agrega lo siguiente en /etc/my.cnf; debajo de [mysqld]:
<code># Set default charset to UTF-8
character_set_client=utf8
character_set_server=utf8
collation_server=utf8_unicode_ci
default-character-set=utf8
skip-character-set-client-handshake</code>
Así, no tendrás que usar SET NAMES 'utf8'; antes de cada conexión.
Si no lo eres, simplemente agrega:
<code>SET NAMES 'utf8';</code>
ó
<code>charset 'utf8';</code>
Además, otra solución (según los comments en el manual): en tu .htaccess, puedes agregar:
<code>AddDefaultCharset UTF-8</code>
Para ver tus variables, intenta esta query como usuario root (en mysql)
<code>SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';</code>