Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    gestire caratteri tra php, mysql, ajax

    Ciao a tutti..ultimamente sto avendo seri problemi con il passaggio di stringhe di testa tra questi tre ambienti. in particolare utilizzo ajax per le quotazioni e ho notato che javascript non gestisce correttamente i caratteri con gli accento.

    il mio script funziona così: tramite ajax viene caricato uno script php che prende del testo da mysql e lo passa alla pagina caricandolo dentro una text box. sfortunatamente però i caratteri accentati, che correttamente vengono salvati all'interno di mysql nel passaggio a js scompaiono o diventano caratteri incomprensibili.

    attualmente ho messo una vera e proprio toppa al problema recuperando i dati da mysql e inviandoli a js sotto forma di identità html per poi riconvertirle in caratteri accentati ma il tutto è molto poco elegante e nella text box l'utente non visualizza il normale carattere accentato ma l'identità html che non è il massimo..

    come posso risolvere questo problema? esiste un modo per far si che javascript gestisca correttamente questi particolari caratteri?
    voi come salvate questi caratteri nel database?

    vi ringrazio della disponibilità. ciao!

  2. #2
    ma come nessuno?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    209
    Ho lo stesso tipo di problema, da quello che ho visto Explorer per un carattere accentato può anche crashare, l'unica toppa che ho trovato è stata qulla di passare a un charsete utf-8 sia nella pagina html, che nel xml prodotto da PHP che al salvataggio su DB.
    Per la mancata conversione da entità a carattere da quello che ho visto avviene solo quando si inserisce del testo trasferito direttamente da XML a div con innerHTML.
    Ho pensato di riconvertire le entità in carattere con uno script in js al momento dell'inserimento, ma non ho ancora provato.
    Altro problema è il caratte & che non c'è modo di farlo passare correttamente, se non quello di sostituirlo con una E normale con string.replace(/&/g,'E'); dato che è pericolosissimo per via delle injection e viene inteso sempre e cmq, anche come entità, come separatore di variabili.

  4. #4
    io su database non ho grossi problemi con gli accenti in realtà, li salva correttamente. il vero problema è java script.
    cmq non uso xmlhttprequest per trasferire dati xml ma uso direttamente il testo. è molto più semplice anche perchè non conosco xml. quindi php estrapola il testo da mysql correttamente accentato e quando lo mostro sulla textarea attraverso java il carattere impazzisce.. simpatico.
    ma impostando il charset su html anche javascript tratta correttamente gli accenti?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    209
    A volte sì

  6. #6
    Utente di HTML.it L'avatar di Alberto
    Registrato dal
    Oct 2004
    Messaggi
    1,870
    Io per i caratterei accentati ho fatto tutto in PHP.
    Ho fatto due array, uno con i caratteri accentati e l'altro con il corrispondente codice ASCII, poi con str_replace() vado ad intervenire direttamente nella query di insertimento della tabella così quando vado vado ad estrarre il valore dal campo a video mi viene stampato il carattere giusto.

  7. #7
    hai usato il codice ascii o le identità html?

    saresti così gentile da postare gli array? grazie mille

  8. #8
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    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...

  9. #9
    Utente di HTML.it L'avatar di Alberto
    Registrato dal
    Oct 2004
    Messaggi
    1,870
    Originariamente inviato da flacchio
    hai usato il codice ascii o le identità html?

    saresti così gentile da postare gli array? grazie mille
    Scusa per la risposta un po' tardiva,

    ho fatto due array

    Codice PHP:
    $sostituire = array ('à','è','ì','ò','ù','À','È','Ì','Ò','Ù','á','é','í','ó','ú','Á','É','Í','Ó','Ú');
    $con = array ('à','è','ì','ò','ù','À','È','Ì','Ò','Ù','á','é','í','ó','ú','Á','É','Í','Ó','Ú'); 
    poi con con str_replace() faccio le modifiche

    Codice PHP:
    $stringa $_POST['nome_campo_form'];
    str_replace($sostituire$con$stringa
    Ciao

  10. #10
    grazie mille. (quelli sono identità non codici ASCII attenzione! )

    cmq non ho ben capito. tu il testo convertito in identità lo salvi su database o lo converti prima di stamparlo a video?

    stessa cosa per la funzione escape: la funzione escape come la usi? fai escape(responseText); ?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.