Problemas con charset en PHP y MySQL

Buenas, tengo un problemilla con mi servidor, a ver si alguno da con la tecla de por qué falla.

Estoy desarrollando un portal en PHP 5 y MySQL 4.1, y todo iba bien hasta que ayer me dio por instalar phpMyAdmin para configurar algunas cosillas en la BDD. Me dio por hacer un SELECT y observé que los caracteres no standard se representaban con caracteres similares a 'Ã', aunque no le di mayor importancia, ya que en mi portal se renderizaban perfectamente.

Y como soy un poco gilipollas, pues me dio por pobar a meter un registro con caracteres no standard desde el propio phpMyAdmin, con tan mala pata que ahora en mi portal se renderizan mal los dichosos caracteres. Me puse a configurar la BDD desde phpMyAdmin, y ahora ni en PMA ni en mi portal veo los caracteres.

Accediendo desde un terminal, veo que en la BDD se han guardado correctamente los caracteres acentuados y demás, por lo que descarto que sea el problema de MySQL, y en las páginas sólo dan problemas los caracteres no standard provenientes de un consulta, con lo que supongo que el problema estará en la conexión php-mysql.

He probado ha desinstalar, remover todo lo que pueda oler a mysql, y empezar de nuevo, pero me encuentro de nuevo con el mismo problema.

Tengo seleccionado tanto en PHP como en MySQL el charset UTF-8, las tablas las creo con collation utf8_spanish_ci, y en las cabeceras de mis archivos php siempre coloco el .

Así que ya no sé que más hacer, quizás ustedes veais algo que a mí se me escape.

Saludos y gracias :).

Editado: He desinstalado Apache y todos sus archivos de configuración por si acado, y nada, todo sigue igual :?

Editado2: Conectando con la BDD en una terminal, mirad lo que obtengo:

mysql> SHOW VARIABLES LIKE 'character\_set\_%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+--------------------------+--------+

He buscado algún fichero de configuración de mysql, pero en my.cnf no encuentro como cambiar el charset del server :?.
Por si alguien tiene un problema parecido, decir que ya lo he solucionado. Casi por casualidad, descubrí que la función htmlentities toma como charset por defecto el iso-8859-1, así que hay que pasarle un par de parámetros más, siendo el segundo parámetro opcional el charset a usar (en mi caso utf-8). En mi caso, la llamada quedaría así:

$variable_destino = htmlentities ($variable, ENT_QUOTES, 'UTF-8');


Para más info, http://www.php.net :)
1 respuesta