j'ai besoin de détecter l'encodage de fichiers html...
de fichier html off-line, pas question d'avoir les headers HTTP.
pas facile, j'ai quatre méthodes :
- 1 - détecter le charset dans la balise meta content type si elle
existe
- 2 - utiliser nkf #guess1
- 3 - utiliser nkf #guess2
- 4 - vérifier avec SubEthaEdit et/ou Firefox l'encodage effectif.
bon, le résultat des courses :
- en général SubEthaEdit et Firefox sont d'accord
- pour nkf #guess1 et nkf #guess2 je n'ai pas trouvé de table donnant
l'encodage en fonction de l'entier retourné, une ref est donnée : c'est
un livre ?
- qqfois l'encodage donné par la balise meta est FAUX cf le site
RubyCocoa <> qui donne ISO-8859-1 alors que les pages sont en UTF-8 MAIS
guess1 et guess2 ne donnent pas le même résultat sur ces pages (guess2
donne qq pages en SIJS d'autres en UTF-8 quand guess1 ne voit QUE de
l'UTF-8)
- d'autres fois c'est la balise meta qui est bonne est guess1 (donne
UTF-8 pour ISO-8859-1) FAUX...
bref nue situation indém@&dable ;-)
un peu de lumière ???
j'utilise guess1 et guess2 simplement :
val=NKF.guess1(string)
avec :
string=<tout le contenu du fichier html>
obtenu par :
string=""
File.open("#{file}").each { |line|
string << line
}
en espérant qu'il n'y a pas une conversion sournoise dans les trois
lignes juste au-dessus...
--
une bévue