io ho risolto il problema direttamente da javascript...
in pratica prima di inviare il testo al server lo converto con la funzione escape()
e, viceversa, quando ricevo la stringa dal server, prima di visualizzarla, la riconverto con la funzione unescape().
in questo modo passano anche caratteri come la & commerciale e gli accenti...
ovviamente poi vanno quotati anche lato server tramite le funzione htmlspecialchars di php onde evitare problemi di sql injection...
purtroppo non tutti i caratteri si salvano ma sarebbe impossibile pensare ad una cosa perfetta... per esempio caratteri come il + danno ancora problemi e non passano ma la cosa
risulta cmq accettabile...