-
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
-
Prova a stamparlo in una pagina (prelevandolo dal database), probabilmente phpMyAdmin usa charset differente.
Ciao!
-
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 ?
-
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!
-
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.
-
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!
-
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
http://pierinik.altervista.org/set.jpg
-
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!
-
OK. Grazie.
Adesso ci sono riuscito.
Un grande grazie