giovedì 16 novembre 2017

Come sapere il charset di una stringa in php

Sia che tu importi un file csv, txt, di testo generale, sia che tu peschi i dati dal database mysql o da altre fonti, con il php c'è la possibilità di sapere il charset usato.
Conoscere questa cosa può essere di vitale importanza per non incorrere nei classici problemi di codifiche delle accentate e dei caratteri speciali.

Quante volte hai importato nel tuo database un file di testo proveniente da chissà dove e poi ti sei accorto che al posto delle lettere accentate avevi dei punti di domanda?
Ebbene, grazie al metodo che ti andrò a spiegare, potrai risolvere il problema accentate php a monte... o per meglio dire, questo è solo l'inizio, poi sceglierai tu stesso in che charset codificare la stringa / testo a tua disposizione.
Vediamo subito come scoprire il charset usato, tramite una comodissima fuzione php.


Come sapere il charset di una stringa in php


Per ricavare il charset usato in una stringa, sia che provenga da un database, che da un file di testo, ecco la funzione php da utilizzare:

mb_detect_encoding($testo);

La funzione php mb_detect_encoding riporterà a video il charset utilizzato nella variabile passata.
Se per caso non dovesse riportare niente, no problem, perchè solitamente l'esigenza è che il charset sia di un determinato tipo, quindi ad esempio potremmo usare questa funzione in una if, dove se il risultato non è un bel UTF-8, allora basta convertite il tutto in uft8.

Grazie a questo stratagemma ad esempio, io ho risolto il problema di un import csv da liste diverse, dove in alcuni casi la pagina php mostrava a video al posto della lettera accentata un punto di domanda (?), ed effettivamente anche andando poi a guardare dentro il database mysql, i caratteri speciali erano stati salvati male.

E con il problema charset php, sempre una spinosa questione e causa di grattacapi, per oggi è tutto :)
Adesso puoi ottenere/ricavare il charset di una stringa/testo con il php, qualsiasi sia la sua provenienza.
Spero che questo tutorial sia stato utile, ed in caso di dubbi, lascia pure un commento.

Piaciuto l'articolo? Lascia un commento!

EmoticonEmoticon