Il problema è sicuramente nella gestione del charset del DB.
Io fossi in te, farei uno script che mi preleva i dati e mi permette di sostituirli con i relativi caratteri xml friendly:

Codice PHP:
$stringa str_replace("°""°"$stringa);
$stringa str_replace("&""&"$stringa);
$stringa str_replace("\"""&quote;"$stringa);
$stringa str_replace("\'""'"$stringa);
$stringa str_replace("è""è"$stringa);

// eccetera 
IN questo modo, nel DB metti solo caratteri accettati in qualsiasi charset, in estrapolazione non hai necessità di trasformarli in caratteri leggibili, e ci guadagni pure se il tuo sito è in XHTML.... almeno sai che non hai problemi di validazione di codice.