Si potrebbe risolvere il problema dell'euro, togliendo la conversione di <textarea name="text"> da utf-8 in iso-8859-1, usando al suo posto, nella textarea con method="POST", le funzioni htmlentities e html_entity_decode per l'invio effettivo,nel caso di mancato invio, si crea la bozza con l'aggiunta di htmlentities.
htmlentities($stringa,ENT_QUOTES,'Windows-1252');
Mentre se proviene da bozze, dovrebbe essere d'apprima decodificato con
html_entity_decode($stringa,ENT_QUOTES,'Windows-1252'); (succesivamente dovranno essere encodati, come specificato nel services.xml ).
ps. per il corretto funzionamento dei moduli, deve essere specificato header('Content-type: text/html; charset=Windows-1252'); con l'attributo accept-charset="Windows-1252" dell'elemento form.
Per i dati che saranno visualizzati come html (inviati,ricevuti, bozze , nonché la stessa pagina d'invio... altro ecc.), si dovrebbe specificare lo stesso header, è codificarli con htmlentities(); inclusa la pagina d'invio perché dovrebbe prelevare i dati originali (ad es. text/plain di: servizi.php,rubrica.php e altro)
EDIT: utilizzare per i servizi, html_entity_decode e urlencode, per non avere problemi con caratteri riservati.
Ricordo, che nel caso di mancato invio, si crea la bozza, con htmlentities.
Per i file (php,txt) text/plain, dovrebbero essere specificati con header('Content-type: text/plain; charset=Windows-1252');
ps. ovviamente tutti i file creati, dovrebbero essere con charset windows-1252.