buonasera.
avrei delle dubbi riguardo codifica/charset di caratteri speciali.
partiamo con il primo problema!
ho impostato questo tag tra il <title> della pagina in cui visualizzo i vari caratteri :
da quanto ho capito, questo "tag" fà in modo che il browser, aprendo la pagina e riconoscendo questo charset, decodifichi le "stringhe" (che poi lato client non sono delle stringhe, ma la stampa di esse sulla pagina php) annidate nella pagina (pescate per esempio da database), visualizzando i caratteri nella sua vera natura (e quindi non più codificati).codice:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
(premessa : nel database charset e collation sono a latin, non utf8.)
supponiamo di inviare dei dati contenuti in delle input type=text : essi arrivano al server (che per esempio esegue un inserimento di questi caratteri nel database) già codificati in utf8. (infatti, andandoli a ripescare successivamente li visualizzo corretti). ora, se i dati non vengono presi da input type=text ma da txt, prima di inserirle nel database devo utilizzare $var=utf8_encode($var) per eseguire la codifica in utf8.
quello che vorrei sapere è :
1 - perchè nel primo caso (tramite input type=text, ovvero direttamente dalla pagina php) non è necessario utilizzare utf8_encode? è perchè ho impostato appunto charset=utf-8 nel "meta"? o perchè lo faccio da javascript e quest'ultimo esegue la codifica? o magari qualche altro motivo che mi sfugge...
detto questo, mi sfugge il meccanismo con cui il database và a gestire le proprie collection.
nel caso precedente, tramite la funzione utf_encode o direttamente se gestiti da javascript, i caratteri si trovano in delle variabili ora codificate in utf8 (lato server).
2 - quando vado a inserire questi caratteri in un database con charset e collation utf8 (per esempio), esso esegue una nuova codifica sui caratteri che gli arrivano? (nel nostro esempio, una doppia codifica utf8).
3 - e una volta che i dati memorizzati sul database vengono pescati, esso esegue una decodifica per far tornare i dati nel loro aspetto originario? (cioè come erano prima dell'inserimento)? oppure ritorna semplicemente i dati come si trovano sul database (e quindi con la codifica che esso stesso ha applicato, nel nostro caso una codifica su una codifica)?
ho provato a cercare argomenti a riguardo (premetto non ho mai letto libri specifici per questo argomento) ma non trovo niente di così specifico. ho letto solo il "perchè" delle collation e charset (suggeriti da un utente tempo fà su questo forum, riguardo lo stesso argomento più o meno), ma non ho trovato una valida delucidazione.
se qualcuno ha tempo e voglia, mi farebbe piacere risolvere questa questione.
cordiali saluti