Il tuo è il classico problema di diversità di codifica dei caratteri tra db e browser.
Credo che nell'utlimo mese avrò risposto alla stessa maniera ad almeno una decina di post!
Si risolve molto semplicemente facendo uno string replace dei caratteri accentati e/o apostrofati prima dell'immissione nel DB.
Peraltro con caratteri XML friendly, per cui ci guadagni anche nel momento in cui deciderai di creare un sito in XHTML strict che possa essere maggiormente accessibile ed usabile.
Comunque, ti posto qualche riga di codice per concludere.
Codice PHP:
// recuperi il testo da immettere
// nel DB passato da una form
$stringa = $_POST['stringa'];
$stringa = str_replace("\'", "'", $stringa);
$stringa = str_replace("\"", """, $stringa);
$stringa = str_replace("è", "è", $stringa);
// eccetera eccetera
Questa variabile sarà poi passata al DB per esservi salvata.
Quando estrapolerai i dati, vedrai che il browser non ti modificherà nulla.