Puedes usar la codificación
utf-8 en el head de tu página, o bien, a la hora de insertar los mensajes en la base de datos, uso esta función, que es como un htmlentities, pero hecha por mí:
# Codificar carácteres especiales
function encode($texto){
$antes = array('"','¡','á','é','í','ó','ú','ã','õ','â','ê','î','ô','û','ç','ü','Á','É','Í','Ó','Ú','Ã','Õ','Â','Ê','Î','Ô','Û','Ç','Ü','"','~','>','<','ñ','Ñ','¿');
$despues = array(""","¡","á","é","í","ó","ú","ã","õ","â","ê","ê","ô","û","ç","ü","Á","É","Í","Ó","Ú","Ã","Õ","Â","Ê","Î","Ô","Û","Ç","Ü","´","˜",">","<","ñ","Ñ","¿");
$texto = str_replace($antes,$despues,$texto);
return $texto;
}Y entonces, así cuando lo vas a guardar en la base de datos, lo guardas así:
$mensaje = encode($_POST['mensaje']);
mysql_query("INSERT INTO mensajes (mensaje) VALUES ('$mensaje')");
// etc...Saludos ^^