Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Problema accenti

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360

    Problema accenti

    Salve ragazzi,

    ho problemi ad inserire caratteri accentati come "èòàù" che nel DB appaiono come "èòà ù".

    Premetto che la pagina che ospita il form ed il PHP contiene

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    Le tabelle invece sono "utf8_general_ci".

    Cosa devo fare ancora?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Quote Originariamente inviata da harry80 Visualizza il messaggio
    ...
    Cosa devo fare ancora?
    Usre la funzione di ricerca, se ne è parlato già un'infinità di volte.
    Per esempio
    http://forum.html.it/forum/showthrea...1#post25149201

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Usre la funzione di ricerca, se ne è parlato già un'infinità di volte.
    Per esempio
    http://forum.html.it/forum/showthrea...1#post25149201
    Grazie, avevo cercato ma mi sfuggiva la questione "connessione" avendo per la prima vola cambiato metodo, ho risolto con $db->exec("set names utf8");.

    Una domanda, quando scrivo "c'era una volta", nel DB mi scrive "c\'era una volta" con il backslash, è giusto perché poi quando stampo userò stripslashes, oppure esiste un metodo per scrivere direttamente nel DB senza il backslash?
    Ultima modifica di harry80; 16-12-2013 a 15:19

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313
    Quote Originariamente inviata da harry80 Visualizza il messaggio
    Grazie, avevo cercato ma mi sfuggiva la questione "connessione" avendo per la prima vola cambiato metodo, ho risolto con $db->exec("set names utf8");.

    Una domanda, quando scrivo "c'era una volta", nel DB mi scrive "c\'era una volta" con il backslash, è giusto perché poi quando stampo userò stripslashes, oppure esiste un metodo per scrivere direttamente nel DB senza il backslash?
    problema vecchio e noto, ci sono varie soluzioni al riguardo, poi ovviamente dipende dalle esigenze e da li si procede, una soluzione semplice e funzionale potrebbe essere la seguente, ti scrivi una funzione che trasforma i caratteri speciali in codici ascii e da li poi puoi caricarli senza problemi nel db...

    Nota che, nel caso devi fare una ricerca nel db, ti conviene convertire prima la parola da ricercare e poi fai la ricerca, in questo modo anche se un carattere è stato convertito, ci sarà la perfetta coincidenza e ti verrà restituito il record...

    Codice PHP:

         
    public function real_escape($key=null){
             
    $key_b=  str_replace("'""'"$key);
             
    $key_c=  str_replace('"',""",$key_b);
             return 
    $key_c;
         } 
    ad esempio con questo codice io converto tutti gli apostrofi e le virgolette nel relativo codice asci, ovviamente se ti serveono altri caratteri, devi solo aggiungerli....

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Quote Originariamente inviata da sjpagan Visualizza il messaggio
    problema vecchio e noto, ci sono varie soluzioni al riguardo, poi ovviamente dipende dalle esigenze e da li si procede, una soluzione semplice e funzionale potrebbe essere la seguente, ti scrivi una funzione che trasforma i caratteri speciali in codici ascii e da li poi puoi caricarli senza problemi nel db...

    Nota che, nel caso devi fare una ricerca nel db, ti conviene convertire prima la parola da ricercare e poi fai la ricerca, in questo modo anche se un carattere è stato convertito, ci sarà la perfetta coincidenza e ti verrà restituito il record...

    Codice PHP:

         
    public function real_escape($key=null){
             
    $key_b=  str_replace("'""'"$key);
             
    $key_c=  str_replace('"',""",$key_b);
             return 
    $key_c;
         } 
    ad esempio con questo codice io converto tutti gli apostrofi e le virgolette nel relativo codice asci, ovviamente se ti serveono altri caratteri, devi solo aggiungerli....
    OK, grazie! Pensavo in qualche riga di codice e non di dover prevedere tutti i caratteri...

    Una cosa, se lascio che nel DB rimanga il backslash di "c\'era una volta", quando faccio una ricerca scrivendo "c'era una volta", me lo trova il record oppure no perché dovrei scriverlo con il backslash ovvero "c\'era una volta"?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Comunque sia, in modalità modifica dove uso stripslashes, trim, mysql_real_escape_string, riesco a scrivere nel DB tranquillamente "c'era una volta" senza backslash, per quale motivo non riesco nella prima fase d'inserimento nel DB?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Risolto mettendo $stmt->execute(array(stripslashes($nome), stripslashes($cognome))); A questo punto, se nel DB è già tutto corretto senza backslash ad esempio, qual'è il senso di usare ancora trim, mysql_real_escape_string e ancora stripslashes nel recupero di dati dal DB e per stamparli a video? Mi date gentilmente una spiegazione per capire meglio?

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.