Le 29/09/12 09:30, Sergio a écrit :
>> >j'ai besoin d'obtenir l'encodage d'un fichier css, par programme et donc
>> >"a priori".
>> >
>> >par exemple celui-ci :
>> >
http://www.certiferme.com/commun.css
> En général, sauf tours vicieux, un fichier css est de l'ASCII pur (pas de
> caractères accentués ou étrangers).
ben oui, c'est bien ce que je pense MAIS, ruby me dit le contraire, ce
n'est pas de l'ascii, d'ailleurs, le caractère @ existe t'il en ascii ?
>> >si je regarde avec lynx :
>> >l'encodage n'est pas donné, si j'ouvre ce fichier avec TextWrangler (sur
>> >Mac OS X Lion) ça me donne "Western (Mac OS X Roman)"
>> >et les retours chariot étant en "Windows (CRLF)".
> Je suppose que "TextWrangler" prend son encodage par défaut (celui du
> Mac). Mon Firefox donne "ISO-8859-1" (son encodage par défaut ?).
ben il devrait me donner l'encodage du fichier non ?
ou alors TextWe-rangler fait une conversion auto ?
>> >j'ai besoin de connaître l'encodage de ce fichier pour le transcoder en
>> >UTF-8, car je recherche systématiquement dans les fichiers css les
>> >"@import url" afin de les importer localement.
> Un transcodage "UTF-8" donnera la même chose, AMHA...
ben oui, si c'est de l'ascii.
bon, j'ai fait quelques essais avec des librairies de détection en ruby,
résultats pas fameux, la première essayée :
"chardet" <
https://github.com/janx/chardet>
le code ne marche pas tel quel, j'ai du corriger des erreurs de syntaxes
en ruby...
ça date de deux ans.
la seconde rchardet1.9
<
http://rubydoc.info/gems/rchardet19/1.3.5/frames>, là ça me donne :
url =
http://www.certiferme.com/commun.css
CharDet.detect(css).confidence = 0.7217099325349031
CharDet.detect(css).encoding = ISO-8859-2
ce fichier "
http://www.certiferme.com/commun.css" téléchargé et converti
en UTF-8 par TextWrangler dans le fichier "commun-utf8.css" :
url = certiferme-RECETTE TARTE AUX RAISINS, RECETTE TARTE AUX RAISINS,
DESSERT avec photo_files/commun-utf8.css
CharDet.detect(css).confidence = 0.7525
CharDet.detect(css).encoding = utf-8
il semblerait donc que ce soit de l'ISO-8859-2, donc j'essaie la
conversion ISO -> UTF-8 :
CharDet.detect(css_utf8).confidence = 0.7525
CharDet.detect(css_utf8).encoding = utf-8
après avoir ajouté :
css_utf8=css.encode('UTF-8', cd.encoding)
le code ruby si quelqu'un est intéressé :
require 'rchardet19'
css=open(url) { |f| f.read }
cd=CharDet.detect(css)
puts "CharDet.detect(css).confidence = #{cd.confidence}"
# -> CharDet.detect(css).confidence = 0.7217099325349031
puts "CharDet.detect(css).encoding = #{cd.encoding}"
# -> CharDet.detect(css).encoding = ISO-8859-2
css_utf8=css.encode('UTF-8', cd.encoding)
cd=CharDet.detect(css_utf8)
puts "CharDet.detect(css_utf8).confidence = #{cd.confidence}"
# -> CharDet.detect(css_utf8).confidence = 0.7525
puts "CharDet.detect(css_utf8).encoding = #{cd.encoding}"
# -> CharDet.detect(css_utf8).encoding = utf-8
donc, ça devrait rouler (?), d'après la doc, la détection est ok si
#confidence est > 0.6.