- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- PHP e MySQL - caratteri accentati
-
PHP e MySQL - caratteri accentati
Salve a tutti. Sto collaborando ad un sito con un mio amico e ho riscontrato questo problema.
Nell'inserimento nel database a volte ci sono dei caratteri accentati (à,è,é,ì,ò,ù), che quando vengono richiamati in seguito danno come risultato quello spiacevole quadratino con il punto interrogativo.Per ovviare a questo problema, prima della memorizzazione del database, ho inserito questo:
[PHP]$replacer= array('è' => 'è',
'é' => 'é',
'à' => 'à',
'ì' => 'ì',
'ò' => 'ò',
'ù' => 'ù');foreach($replacer as $replace => $find)
{
$descrizione = str_replace($find, $replace, $_POST[description]);
}[/PHP]
Così, però, anche quando scrivo "è", lui mi memorizza "è" e non "è".
Allora ho pensato che leggendo "è" automaticamente lo cambiasse in "è" per semplificare.SE, e ripeto SE ho ragione, come posso fare?
(E se non ho ragione? :D)Grazie
-
Dopo la connessione al database, esegui questa query:
[php]
SET name = utf8
[/php]
E dovrebbe iniziare a funzionare tutto come dovrebbe.
-
Grazie, ma non funziona. Forse non l'ho scritto nel modo giusto.
[PHP]#Ho provato con:
//mysql_query("SET name = utf8");
//mysql_query("SET names = utf8");
mysql_query("SET NAMES = utf8");[/PHP]EDIT: effettivamente qualcosa fa, quando scrivo dei caratteri "speciali" nel db vengono tralasciati
-
prova con htmlentities
ti permette anche di agire sulle virgolette
-
Se imposi al connessione in utf8, usi utf8 come codifica della pagina web, e le tabelle sono in utf8 non hai problemi. Se invece mischi le codifiche hai qualche problema, controlla che sia tutto in utf8.
-
Grazie, ma ho impostato tutto a UTF-8 e non è cambiato molto, con htmlentities invece va. Dici che è strano?
-
Con tutto in utf-8 dovrebbe funzionare perfettamente senza problemi.
-
[php]
SET NAMES utf8
[/php]E per dargli un senso andrebbe messo in my.cnf nella sezione [mysqld] come
[php]
[mysqld]
init_connect = 'SET NAMES utf8'
[/php]Comunque se la classe che hai implementato per la connessione al DB e
singleton o comunque e
una classe mettila subito dopo esserti connesso al DB
-
Ciao,
utilizzando htmlentities non risolvi il problema, lo reggiri semplicemente, perchè questa funzione converte i caratteri accentati in entità.
Per un corretto funzionamento utilizzando la codifica utf8 ti devi assicurare che tutto utilizzi utf8 come codifica, i file php (quindi l'editor che utilizzi), la connessione al database (quindi utilizzando SET NAMES), la codifica della pagina html (quindi il meta "Content-Type") e alcune volte occorre settare la codifica anche mediante il php tramite l'header, questo se vuoi ragionare in tutto con utf8.