Newsgroup: it.comp.www.php
Titolo: charset, phpmyadmin, accenti

Scusate la "quasi"-FAQ, ma non sono riuscito a trovare niente di 
concreto per ora.
win xp/apache 2.2.3/php 5.2.0/mysql 5.0.27/phpmyadmin 2.10.0-rc1
Vengo subito al dunque.
- mia_pagina.php:
Questa pagina ha il tag <meta> che specifica il charset a utf-8.
Se vado a visualizzare, in questa pagina, alcuni valori prelevati da 
una tabella di un mio db, mi visualizza correttamente le lettere 
accentate.
Se invece provo a visualizzare, direttamente con phpmyadmin, il 
contenuto della stessa tabella, gli accenti diventano tutti sballati.
Eppure anche la codifica della pagina in phpmyadmin è impostata, 
tramite il tag <meta> a utf-8.
Quindi: stessa codifica per la pagina mia_pagina.php e per la pagina 
main.php di phpmyadmin, stessa tabella considerata, ma differente 
visualizzazione: in un caso accenti corretti, nell'altro no.
Perché??
Deve essere una questione di phpmyadmin, ma quale?
--
rob4you

 tag <meta> a utf-8.
E' una giungla, io per non impazzire trasformo sempre tutti i testi con 
htmlentities: un &egrave; sarà sempre visualizzato bene
-- 
Raffaele Masi
www.webmasterfirenze.it

rob4you ha scritto:

hai selezionato, nella pagina principale di phpmyadmin, language: italian it-utf8?

 it-utf8?
SI!
Non vorrei ricorrere alla soluzione suggerita da Raffaele Massi perché 
non vorrei modificare il contenuto dei record solo perché phpmyadmin li 
visualizza male.
Ripeto, negli script vengono visualizzati bene.
--
rob4you

 htmlentities: un &egrave; sarà sempre visualizzato bene
io uso htmlentities($mystring, ENT_COMPAT, 'UTF-8').
altrimenti, un banale codice come questo può dare problemi:
	echo htmlentities('«Salve mondo!»');
(dipende dal charset di default impostato sul server)
Ciao.
Tristan

Vi spiego meglio il problema, e poi vi dico come ho risolto.
Spero non vi perdiate nella spiegazione. :-)
Ho una mia pagina index.php.
1) inserisco all'inizio il tag <meta> con charset a utf-8
2) tramite le funzioni del DOM (php 5), carico e manipolo le pagine di 
uno sito web esterno, allo scopo di ricavarne alcune informazioni. La 
proprietà $doc->actualEncoding mi restituisce "iso-8859-1"
3) se provo visualizzare queste informazioni tramite un semplice echo 
(tipo echo $doc_elem->nodeValue;), osservo la seguente cosa:
     (a) se il tag meta iniziale era impostato a utf-8, visualizzo 
correttamente le lettere accentate
     (b) se il tag meta iniziale era impostato a iso-8859-1, 
stranamente gli accenti non li visualizzo più correttamente, a meno che 
non uso la funzione utf8_decode, cioé echo 
utf8_decode($doc_elem->nodeValue);
4) supponiamo di aver seguito la strada (a). Continuo il lavoro 
inserendo nel database queste informazioni. La tabella era stata 
precedentemente creata con il character set impostato a utf-8
5) se infine recupero dal db le informazioni appena inserite, mi 
vengono visualizzate con gli accenti corretti
6) se invece vado a vedere attraverso phpmyadmin il contenuto della 
tabella, ho il problema degli accenti.
Ho risolto, ma vorrei capire perché non andava bene nell'altro caso, 
nel seguente modo:
- tag <meta> impostato a iso-8859-1 nella mia pagina index.php, usando 
la tabella del db con charset iso-8859-1
- utf8_decode prima dell'inserimento nel db. Così facendo il punto 5) e 
il punto 6) forniscono entrambi la soluzione corretta. Come detto 
prima, in questo caso devo seguire la strada (b).
Spero che qualcuno di voi mi abbia seguito nel ragionamento un po' 
contorto, ma purtroppo coi charset è una mattanza! :-)
--
rob4you
www.outofmind.eu

 ma purtroppo coi charset è una mattanza! :-)
Se può interessare ecco cosa mi da phpmyadmin, specificatamente ai 
charset, se visualizzo le variabili e i parametri del server:
character set client  	utf8
(Valore globale) 	latin1
character set connection 	utf8
(Valore globale) 	latin1
character set database 	latin1
character set filesystem 	binary
character set results 	utf8
(Valore globale) 	latin1
character set server 	latin1
character set system 	utf8
--
rob4you
www.outofmind.eu