Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

obtenir l'encodage d'un fichier css

13 réponses
Avatar
Une Bévue
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

si je regarde avec lynx :
$ lynx -head -dump http://www.certiferme.com/commun.css
HTTP/1.1 200 OK
Date: Sat, 29 Sep 2012 07:05:00 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch
Last-Modified: Thu, 26 Apr 2012 14:59:35 GMT
ETag: "7e0224-1d3b7-4be963c6d23c0"
Accept-Ranges: bytes
Content-Length: 119735
Connection: close
Content-Type: text/css

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)".

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.

donc, comment obtenir cet encodage ?

10 réponses

1 2
Avatar
Sergio
Le Sat, 29 Sep 2012 09:20:14 +0200, Une Bévue 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).

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 ?).

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...
Avatar
yamo'
Salut,

Une Bévue a tapoté, le 29/09/2012 09:20:
par exemple celui-ci :
http://www.certiferme.com/commun.css



Seamonkey, en faisant "Control i" me dit : ISO-8859-1

--
Stéphane <http://pasdenom.info/fortune/?>
BOFH excuse #161:

monitor VLF leakage
Avatar
M.H
yamo' a écrit :
Salut,

Une Bévue a tapoté, le 29/09/2012 09:20:
par exemple celui-ci :
http://www.certiferme.com/commun.css



Seamonkey, en faisant "Control i" me dit : ISO-8859-1



Ben moi il me donne windows-1252 !

--
M.H.
Avatar
Une Bévue
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.
Avatar
Une Bévue
Le 29/09/12 10:15, M.H a écrit :
Ben moi il me donne windows-1252 !


quel bordel, cette détection.

la librairie rchardet19 (pour ruby 1.9.+) me donne "ISO-8859-2" avec un
degré de confidence de "0.72".
Avatar
Sergio
Le Sat, 29 Sep 2012 10:41:55 +0200, Une Bévue a écrit :

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 ?



Bien sûr : 0x40 (ou 64 en décimal)

cf http://fr.wikipedia.org/wiki/
American_Standard_Code_for_Information_Interchange

url = http://www.certiferme.com/commun.css
CharDet.detect(css).confidence = 0.7217099325349031
CharDet.detect(css).encoding = ISO-8859-2



Idem chez moi (chardet livré de base avec ma distribution Linux).


il semblerait donc que ce soit de l'ISO-8859-2, donc j'essaie la
conversion ISO -> UTF-8 :



Que dit un diff entre la version d'origine et la version utf-8 ? Ça a des
chances d'être les mêmes fichiers, au transcodage des fin de ligne et
l'éventuel BOM rajouté par ton transcodeur.
Avatar
Une Bévue
Le 29/09/12 11:14, Sergio a écrit :
Idem chez moi (chardet livré de base avec ma distribution Linux).



c'est laquelle de distrib ?
perso je suis en Xubuntu / Voyager 12.04 LTS.

j'envisage de passer à Manjaro (version XFCE de Arch), mais il faut que
je teste les paquets car j'ai besoin de :
Apache2 + php, PostgreSQL
Ruby s'installe à part avec rvm.


>il semblerait donc que ce soit de l'ISO-8859-2, donc j'essaie la
>conversion ISO -> UTF-8 :


Que dit un diff entre la version d'origine et la version utf-8 ? Ça a des
chances d'être les mêmes fichiers, au transcodage des fin de ligne et
l'éventuel BOM rajouté par ton transcodeur.



Je ne sais pas trop utilisé diff, j'ai fait "bêtement" un :
$ diff commun-utf8.css commun.css

qui me donne :
1,4680c1,4680
puis des tas de lignes css précédées de "<"
4682,4826c4682,4826
et des tas de lignes css précédées de ">"

Bon, après un chti coup de man et :

$ diff -E -w -B --strip-trailing-cr commun-utf8.css commun.css

j'obtiens qqc de plus lisible :

878c878
< /* !: Le total width+margin-top+margin-left doit etre egal ‡ 535px */;
---
/* !: Le total width+margin-top+margin-left doit etre egal ?


535px */;
4096c4096
< /* Mots clÈ de bas de page */
---
/* Mots cl? de bas de page */




CONCLUSION : ce sont des commentaires qui posaient problème...
Avatar
Une Bévue
Le 29/09/12 12:22, Une Bévue a écrit :
Idem chez moi (chardet livré de base avec ma distribution Linux).



c'est laquelle de distrib ?
perso je suis en Xubuntu / Voyager 12.04 LTS.


bon sur Linux j'ai bien chardet, pas sur Mac OS X, je l'ai en lib ruby
(gem), ça me suffit.
Avatar
Sergio
Le Sat, 29 Sep 2012 12:22:34 +0200, Une Bévue a écrit :

Le 29/09/12 11:14, Sergio a écrit :
Idem chez moi (chardet livré de base avec ma distribution Linux).



c'est laquelle de distrib ?
perso je suis en Xubuntu / Voyager 12.04 LTS.



Linux Mint Maya (basé sur Ubuntu 1.04). Donc je suppose, le même...
Avatar
Sergio
Le Sat, 29 Sep 2012 12:22:34 +0200, Une Bévue a écrit :

Le 29/09/12 11:14, Sergio a écrit :
Idem chez moi (chardet livré de base avec ma distribution Linux).



c'est laquelle de distrib ?
perso je suis en Xubuntu / Voyager 12.04 LTS.



Linux Mint Maya (basé sur Ubuntu 12.04). Donc je suppose, le même...
1 2