Bonjour,
Post by Jean-Francois OrtoloJ'ai une chaîne de caractères, son encodage peut être uft-8 ou
iso-8859-1 ou iso-8859-15.
Si la chaîne vient d'un utilisateur, elle pourrait aussi bien être en
win1252, pris à tort pour de l'iso-8859-1.
Post by Jean-Francois OrtoloComment faire pour savoir son encodage, dans le but éventuellement,
de faire une conversion avec iconv() , vers l'encodage iso ?
Voici comment je procèderais.
1) Commencer par vérifier si c'est de l'UTF-8, qui est le plus facile à
reconnaître (et encore plus facile à éliminer). Par exemple, tu peux
tenter un iconv depuis UTF-8 vers un autre jeu censé contenir tous les
caractères. Je ne sais pas si iconv de UTF-8 vers UTF-8 fait la
vérification, mais ça devrait être le cas.
2) Si ce premier test à échoué, chercher s'il y a des caractères entre
128 (80 hexa) et 159 (9F hexa), auquel cas ça a toutes les chances
d'être du win1252. En particulier, les caractères numéros 128, 133,
146 et 156 représentent respectivement le sybole euro, les points de
suspension, l'apostrophe et la ligature oe.
Cf. http://www.miakinen.net/vrac/charsets/?or=4
3) Sinon, chercher s'il y a les caractères numéros 164 et 189, assez
caractéristiques d'iso-8859-15 (respectivement l'euro et la ligature oe
dans iso-8859-15, mais le symbole monétaire international et la fraction
1/2 dans iso-8859-1.
Cf. http://www.miakinen.net/vrac/charsets/?or=3
4) Enfin, en dira que c'est iso-8859-1.
Cf. http://www.miakinen.net/vrac/charsets/?or=2