Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

obtenir l'encodage d'un fichier css

1 view
Skip to first unread message

Une Bévue

unread,
Sep 29, 2012, 3:20:14 AM9/29/12
to
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 ?

Sergio

unread,
Sep 29, 2012, 3:30:19 AM9/29/12
to
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...
Message has been deleted

M.H

unread,
Sep 29, 2012, 4:15:33 AM9/29/12
to
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.



Une Bévue

unread,
Sep 29, 2012, 4:41:55 AM9/29/12
to
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.



Une Bévue

unread,
Sep 29, 2012, 4:43:55 AM9/29/12
to
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".

Sergio

unread,
Sep 29, 2012, 5:14:10 AM9/29/12
to
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.

Une Bévue

unread,
Sep 29, 2012, 6:22:34 AM9/29/12
to
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...

Une Bévue

unread,
Sep 29, 2012, 6:31:28 AM9/29/12
to
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.

Sergio

unread,
Sep 29, 2012, 8:13:08 AM9/29/12
to
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...

Sergio

unread,
Sep 29, 2012, 8:22:10 AM9/29/12
to
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...

Une Bévue

unread,
Sep 29, 2012, 8:58:10 AM9/29/12
to
Le 29/09/12 14:22, Sergio a écrit :
> Linux Mint Maya (basé sur Ubuntu 12.04). Donc je suppose, le même...
>
j'ai essayé et j'ai eu des pbs :
perte de la partie haute des fenêtres...

Pierre Goiffon

unread,
Oct 8, 2012, 12:07:15 PM10/8/12
to
Le 29/09/2012 09:20, Une Bévue a écrit :
> j'ai besoin d'obtenir l'encodage d'un fichier css, par programme et donc
> "a priori".

Hahum, j'arrive après la bataille...
A noter que pour les CSS il y a des cas particuliers !

Reprenons la recommandation de base déjà :
http://www.w3.org/TR/html401/charset.html#h-5.2.2
"To sum up, conforming user agents must observe the following priorities
when determining a document's character encoding (from highest priority
to lowest):
1. An HTTP "charset" parameter in a "Content-Type" field.
2. A META declaration with "http-equiv" set to "Content-Type" and a
value set for "charset".
3. The charset attribute set on an element that designates an external
resource."

Les fichiers CSS ont des particularités...
Cf http://www.w3.org/TR/CSS21/syndata.html#x50
"An HTTP "charset" parameter in a "Content-Type" field (or similar
parameters in other protocols)
BOM and/or @charset (see below)
<link charset=""> or other metadata from the linking mechanism (if any)
charset of referring style sheet or document (if any)
Assume UTF-8"

(tiens il faudrait que je maj sur ce sujet ma page
http://pgoiffon.free.fr/info/i18n/web-charset_html.php)

Sinon pour s'assurer qu'un caractère donné est présent dans tel charset,
le fabuleux outil d'Olivier est très pratique :
http://www.miakinen.net/vrac/charsets
Il y a aussi bcp de documentation sur le site du consortium Unicode :
http://www.unicode.org/Public/MAPPINGS/

Une Bévue

unread,
Oct 8, 2012, 12:46:38 PM10/8/12
to
On 08/10/12 18:07, Pierre Goiffon wrote:
> Le 29/09/2012 09:20, Une B�vue a �crit :
>> j'ai besoin d'obtenir l'encodage d'un fichier css, par programme et donc
>> "a priori".
>
> Hahum, j'arrive apr�s la bataille...
> A noter que pour les CSS il y a des cas particuliers !
>
> Reprenons la recommandation de base d�j� :
> http://www.w3.org/TR/html401/charset.html#h-5.2.2
> "To sum up, conforming user agents must observe the following priorities
> when determining a document's character encoding (from highest priority
> to lowest):
> 1. An HTTP "charset" parameter in a "Content-Type" field.
> 2. A META declaration with "http-equiv" set to "Content-Type" and a
> value set for "charset".
> 3. The charset attribute set on an element that designates an external
> resource."

ben en gros c'est ce que je fais, je regarde les headers, si j'ai le
charset, je m'arr�te l� ;
ensuite meta declaration, si trouv�, je m'arr�te l� ;
dans le cas extr�me je fais (avec une librairie idoine) un guess charset
qui me donne un taux de confidence, si sup � 0.6, je m'arr�te l�.
j'assume UTF-8 ;
si �a plante, j'aborte.

> Les fichiers CSS ont des particularit�s...
> Cf http://www.w3.org/TR/CSS21/syndata.html#x50
> "An HTTP "charset" parameter in a "Content-Type" field (or similar
> parameters in other protocols)
> BOM and/or @charset (see below)
> <link charset=""> or other metadata from the linking mechanism (if
> any)
> charset of referring style sheet or document (if any)
> Assume UTF-8"
>
> (tiens il faudrait que je maj sur ce sujet ma page
> http://pgoiffon.free.fr/info/i18n/web-charset_html.php)

oui, l�, c'est plus difficile, avec les css, car quelquefois ce sont les
commentaires dans un css qui ont des caract�res accentu�s donc l�
l'encodage doit-�tre trouv�.

je traite les pages avec ruby 1.9.+, il est tr�s susceptible en terme
d'encodage.

et aussi, ce que tu �cris au dessus, c'est quand les gens respectent la
norme.

> Sinon pour s'assurer qu'un caract�re donn� est pr�sent dans tel charset,
> le fabuleux outil d'Olivier est tr�s pratique :
> http://www.miakinen.net/vrac/charsets

oui, oui, je connais, mais je parle d'un truc par script, donc automatique.
0 new messages