Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254

    ajax problema con charset=ISO-8859-1

    Buona sera,
    ho un conflitto di interessi:

    ho una pagina php inviata con ajax che ha un'intestazione:
    codice:
    header("Content-type: text/html; charset=ISO-8859-1");
    necessaria per il corretto funzionamento delle lettere accentate.

    Poi però ho inviato una variabile che ricevo con $_POST[nome_variabile].

    Questa variabile presenta dei problemi per gli accenti dovuti proprio al charset di cui sopra.

    E' possibile secondo voi isolare o convertire quella variabile ai soli fini della memorizzazione in database?Vi posto un esempio testuale e non codice:

    codice:
    $db->query("insert into tabella (campo) values ('$_POST[nome_variabile]')" );
    //il charset=ISO-8859-1 fa casino
    echo "Questo è il risultato della memorizzazione:"; //necessario il 
    charset=ISO-8859-1
    echo $_POST[nome_variabile]." Il tuo inserimento è il precedente";//conflitto di interessi!!
    Non so se mi sono spiegato, prima di cambiare strategia mi chiedo se è possibile isolare il charset al solo $_POST[..] per la memorizzazione. Non so un regexp($_POST[...]) o qualcosa di strano che non ho mai capito.

    Grazie.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Visto che parliamo di php e il problema è lato server perché hai postato in javascript?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Perchè il problema è ajax anzi, sto pensando che il mio problema reale è questo:

    codice:
    ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
    Ma dato che ho iniziato ad usare ajax da poco sto scoprendo le cose passo passo, kmq se bisogna spostarlo va bene.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non conosci ajax, posti codice php ma ritieni che il problema sia ajax.... strana logica e comunque puoi togliere gli setRequestHeader che fanno solo casino
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Cosa significa:

    urlencoded??

    E perchè con ajax le mie pagine non interpretano gli accenti?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Se lo tolgo non ricevo il risultato.

    Perchè pensi sia strana la logica:

    Uso php, non ho problemi con gli accenti,
    al primo cenno di ajax ricevo problemi con gli accenti.

    Non mi sembra troppo complesso.

    Io credo semplicemente che invio la pagina al server con l'header sbagliato.

    O meglio, perchè le pagine me le interpreta via ajax in un modo e senza ajax in un altro.

    Qui c'è la falla.


  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    T'ho perso, poi se per te è una logica corretta, per me no abbiamo due logiche diverse. Comunque (per esperienza) se usi una sola codifica charset (con ISO-8859-1 mai avuto problemi) sia per l'invio dei dati che per l'inserimento è meglio avrai meno difficoltà, auguri.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Ecco il mio problema:

    Codice PHP:
    <html>
    <head>
    <script>
    function assegnaXMLHttpRequest_()
    {
        // lista delle variabili locali
        var  
        // variabile di ritorno, nulla di default
        XHR = null,
        // informazioni sul nome del browser
        browserUtente = navigator.userAgent.toUpperCase();
        // browser standard con supporto nativo
        // non importa il tipo di browser
        if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
            XHR = new XMLHttpRequest();
            // browser Internet Explorer
            // è necessario filtrare la versione 4
        else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
            // la versione 6 di IE ha un nome differente
            // per il tipo di oggetto ActiveX
            if(browserUtente.indexOf("MSIE 5") < 0)
                XHR = new ActiveXObject("Msxml2.XMLHTTP");
                // le versioni 5 e 5.5 invece sfruttano lo stesso nome
            else
                XHR = new ActiveXObject("Microsoft.XMLHTTP");
        }
        return XHR;
    }
    function invia(){
        reqq = assegnaXMLHttpRequest_();//funzione che assegna l'oggetto presa da html.it
        reqq.open('POST', "lettura.php", true);
        reqq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        reqq.send("variabile=èèèèè");
        reqq.onreadystatechange = function(){
               
            if (reqq.readyState == 4){
                if (reqq.status == 200){
                    
                    document.getElementById("elemento").innerHTML=reqq.responseText;
                }else{
                    alert(reqq.status+" "+reqq.responseText);
                }
            }
        };
    }
    </script>
    </head>
    <body> 
    <?
    echo "<a href=\"#\" onclick=\"invia();\">Invia</a>";
    echo 
    "<div id=\"elemento\">";
    echo 
    "</div>";
    ?>
    </body>
    </html>
    lettura.php
    Codice PHP:
    $db=$cls->connessione();
    $db->query("insert into tabella
    (campo)
    values
    ('
    $_POST[variabile]')");
    $db->query("insert into tabella
    (campo)
    values
    ('èèè')"
    ); 
    Nel primo caso memorizzerà: èèèèè - nel secondo èèè.
    Secondo te il problema dov'è?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Originariamente inviato da a.forte

    reqq.open('POST', "lettura.php", true);
    reqq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    reqq.send("variabile=èèèèè");
    reqq.onreadystatechange = function(){
    Ho risolto così
    codice:
    reqq.send("variabile="+escape("èèèèè"));
    Ma alla fine il problema era php , ajax o mysql.

    In ogni modo grazie.

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.