Visualizzazione risultati 1 fino 9 di 9

Discussione: carattere euro

  1. #1
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito carattere euro

    Salve a tutti.
    Mi sono accorto che alcuni caratteri non vengono interpretati giustamente nel database.
    In particolare mi riferisco al carattere dell'euro €.
    Questi caratteri li ricevo da un form tramite POST.
    Se stampo quello che ricevo con
    Codice PHP:
    print_r($_POST['msg']);
    il testo è giusto con il carattere dell'
    ma se vado a controllare su PhpMyAdmin mi ritrovo
    ?
    Come posso risolvere ?
    Grazie

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Prova a stamparlo in una pagina (prelevandolo dal database), probabilmente phpMyAdmin usa charset differente.

    Ciao!
    Ultima modifica di alemoppo : 12-05-2018 alle ore 01.15.26

  3. #3
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito

    Grazie per la risposta. Avevo già provato. Purtroppo mi fa vedere sempre il punto interrogativo.

    Stavo pensando ad utilizzare htmlentities in questo modo:
    Codice PHP:
    $msg= htmlentities($_POST['msg'], ENT_QUOTES);
    In questo caso quando faccio la verifica con print_r, mi visualizza subito il ?

    Eppure htmlentities() dovrebbe servire a codificare tutti i caratteri.
    Sbaglio qualcosa ?

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    mm no, la htmlentities converte in entità html, ma se gli dai in pasto un carattere mal formato non fa nulla (o meglio fornisce una risposta errata).

    La tabella salva i dati nel formato corretto? Controlla sia la pagina che invia, sia quella che legge che il database che abbiano lo stesso charset; ti potrebbe aiutarti una ricerca sul forum, ad esempio questa discussione.

    Se proprio vuoi convertire i charset, potresti usare la utf8_encode() o utf8_decode() (dipende da che formato scrivi a quale leggi).

    Ciao!
    Ultima modifica di alemoppo : 12-05-2018 alle ore 02.14.47

  5. #5
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito

    Grazie alemoppo Ho guardato su PhpMyAdmin. Qui salva il punto interrogativo.

    In impostazioni generali, Collation della connessione del server Documentazione: utf8mb4_general_ci

    Quindi il carattere cambia quando viene salvato sul db.

    Mi sono scordato di dire che sto provando in locale, non su altervista.
    Ultima modifica di pierinik : 12-05-2018 alle ore 02.34.12

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Prova così: quando crei la tabella, alla fine scrivi
    Codice:
    DEFAULT charset=utf8
    , poi usa sempre l'utf-8 nelle pagine.

    Non prendere come riferimento phpMyAdmin ma prova con le tue pagine.

    Ciao!

  7. #7
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito

    Grazie per la risposta.
    Riassumendo ho:
    Codice PHP:
    $msg= $_POST['msg'];
    echo
    "messaggio '.$msg.' <br />";
    a video è OK, cioè se nel FORM inserisco il carattere dell'euro, quando lo prelevo e lo stampo a video, viene visualizzato.

    Dopo di che ho aggiunto:
    Codice PHP:
    $mysqli->set_charset('utf8');
    ma nel database il carattere € non arriva.

    La tabella l'ho già fatta e l'ho in uso (riguardo al tuo suggerimento).
    Questi sono alcuni settaggi che ho visto nel mio phpMyAdmin.
    Vedi se c'è qualcosa da poter fare ? Grazie

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Ripeto: PhpMyAdmin può avere errori nella visualizzazione (phpMyAdmin non è il database, ma soltanto un'interfaccia grafica come può essere una tua pagina PHP). Assicurati solamente che le tue pagine abbiano lo stesso charset del campo nel database.

    Puoi specificare il charset o tramite PHP
    Codice PHP:
    header('Content-type: text/html; charset=UTF-8');
    O tramite HTML:
    Codice HTML:
    <meta charset="UTF-8">
    Se nella pagina non arriva il carattere corretto, in qualche passaggio è stato elaborato in modo errato (invio o salvataggio o lettura).

    Ciao!

  9. #9
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito

    OK. Grazie.
    Adesso ci sono riuscito.
    Un grande grazie

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •