Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problema caratteri ajax

    Ciao a tutti!
    Ho creato una pagina con ajax e avrei un problema con i caratteri.
    Quando provo ad inserire una stringa processata con il comando htmlentities in un database con delle parole accentate, se lo richiamo tramite uno script scritto solamente in php il testo mi compare correttamente, mentre se provo a richiamarlo con uno script in ajax, le parole accentate sono convertiti in codice. Ora come posso fare per evitare questo problema?

    Questo è lo script ajax:

    codice:
    function CreateXmlHttpReq(handler) {
      var xmlhttp = null;
      try {
        xmlhttp = new XMLHttpRequest();
      } catch(e) {
        try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
      }
      xmlhttp.onreadystatechange = handler;
      return xmlhttp;
    }
    
    function myHandler() {
        if (myRequest.readyState == 4 && myRequest.status == 200) {
            document.getElementById('testo').innerHTML=myRequest.responseText;
        }
    }
    
    function testo(parametro1, parametro2) {
        var r=Math.random();
        myRequest = CreateXmlHttpReq(myHandler);
        myRequest.open("GET","Testo.php?parametro1="+parametro1+"&parametro2="+parametro2+"&rand="+escape(r));
        myRequest.send(null);
    }
    Grazie mille a tutti per l'aiuto.

  2. #2
    Ho risolto il problema semplicemente inserendo nel database i dati processandoli con htmlentities($testo, ENT_COMPAT, "UTF-8")

  3. #3
    Scusate se rispondo di nuovo ma avrei un ulteriore dubbio.
    In una parte del mio sito io do la possibilità agli utenti di crearsi una cartella nel server in cui il mio sito è ospitato. La funzione è mkdir per creare la cartella.
    Il problema è che il nome della cartella è processata con la funzione htmlentities e quaindi, avendo apache la codifica utf-8, quando va a salvarmi il nome della cartella nel server, essa se contiente accenti visualizzaerà un nome con &agrave ecc...
    Dopo aver provato senza successo vari comandi come utf8_decode l'htmlentities($Nome, ENT_COMPAT, "UTF-8") ho pensato di risolvere in questa maniera, ovvero:

    mkdir(html_entity_decode($Nomepath));

    dove il $Nomepath è il nome della cartella precedentemente processato con il comando htmlentities. Ora la domanda: è rischiosa come procedura? togliere l'htmlentities solo in quel comando può essere dannoso?
    Grazie mille a tutti per le eventuali risposte.

  4. #4
    non avendo trovato un'altra soluzione richiedo quanto sopra detto... html_enitity_decode() applicato solo in mkdir protrebbe causare problemi?

  5. #5
    In generale e' sbagliato usare htmlentities() come toppa per risolvere problemi di codifica caratteri: la soluzione corretta e' usare la giusta codifica. htmlentities() andrebbe usato SOLO per il suo vero scopo e cioe' trasformare certi caratteri nelle loro entita' HTML quando questo e' necessario (ormai davvero raramente), altrimenti si incappa in effetti collaterali come questo. Le entita' HTML hanno senso solo in una pagina HTML.

    Per quanto riguarda i nomi di file e directory io sarei per accettare solo un ristretto numero di caratteri, quindi utilizzerei qualche funzione per "ripulirli" (le stesse che si usano per fare i SEO friendly URL).

  6. #6
    ok grazie infinite!

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.