Author: esj@rezo.net
Date: 2009-05-19 15:29:43 +0200 (mar, 19 mai 2009)
New Revision: 14014
Log:
Ajout d'un paramètre optionnel {{{charset}}} à la fonction {{{contenu_document}}}, provoquant la conversion du document (supposé codé dans le charset fourni) dans le charset du site. Application au modèle {{{<text.html>}}} avec l'écriture {{{<textNNN|center|charset=iso-8859-1>}}} qui permet en particulier de transcoder à la volée des CSV.
Mais ? Pourquoi ne fais-tu pas de la détection automagique d'encoding
? dans inc/charsets il y a is_utf8() qui te permettrait d'être plus
smart sans forcer l'utilisateur à préciser quoi que ce soit -- qui en
général dépasse ses connaissances
(et plus ça va plus je pense que tout ce travail devrait faire l'objet
d'un plugin plutôt que d'être codé dans le core.)
2009/5/19 <esj@rezo.net>:
Author: esj@rezo.net
Date: 2009-05-19 15:29:43 +0200 (mar, 19 mai 2009)
New Revision: 14014
Log:
Ajout d'un paramètre optionnel {{{charset}}} à la fonction {{{contenu_document}}}, provoquant la conversion du document (supposé codé dans le charset fourni) dans le charset du site. Application au modèle {{{<text.html>}}} avec l'écriture {{{<textNNN|center|charset=iso-8859-1>}}} qui permet en particulier de transcoder à la volée des CSV.
Mais ? Pourquoi ne fais-tu pas de la détection automagique d'encoding
? dans inc/charsets il y a is_utf8() qui te permettrait d'être plus
smart sans forcer l'utilisateur à préciser quoi que ce soit -- qui en
général dépasse ses connaissances
C'est l'inverse ici: il faudrait is_iso_8859_1 etc,
or c'est moins facile que la détection automatique de l'UTF8 qui est avantagée par
certaines de ses spécificités. Il y a peut-être mieux, mais je n'ai pas vu.
(et plus ça va plus je pense que tout ce travail devrait faire l'objet
d'un plugin plutôt que d'être codé dans le core.)
oui, et la remarque est valable pour tous les filtres. Mais il y a un travail de réflexion préalable sur leur organisation pour pouvoir les externaliser proprement, on en parlera à Avignon je pense.
Le 19 mai 2009 16:01, Committo,Ergo:sum <esj@rezo.net> a écrit :
Le 19 mai 09 à 15:49, Fil a écrit :
Mais ? Pourquoi ne fais-tu pas de la détection automagique d'encoding
? dans inc/charsets il y a is_utf8() qui te permettrait d'être plus
smart sans forcer l'utilisateur à préciser quoi que ce soit -- qui en
général dépasse ses connaissances
C'est l'inverse ici: il faudrait is_iso_8859_1 etc,
or c'est moins facile que la détection automatique de l'UTF8 qui est
avantagée par
certaines de ses spécificités. Il y a peut-être mieux, mais je n'ai pas vu.
Les CSV d'OpenOffice sont par défaut en UTF8...
Ceux de Excel en ISO-8859-x
Je pense qu'on peut sans trop de risque utiliser is_utf8() pour faire une
conversion depuis utf8 si il est detecté comme tel, et depuis iso-8859-1
sinon, au moins en l'absence de charset indiqué, ce qui permettra de couvrir
la plupart des usages.
C'est l'inverse ici: il faudrait is_iso_8859_1 etc,
!is_utf8() => importer depuis iso-latin1
??? Je me trompe où c'est un réflexe franco-français ? Sur un CSV
serbo-croate, ça va donner quoi ?
tu veux dire qu'il vaut mieux obliger de taper charset=xxx que d'avoir
une valeur par défaut couvrant 99% des cas ?
non, mais que de donner l'impression qu'on ne pense qu'à soi, oui.
Maintenant, d'accord pour l'idée d'une valeur par défaut surchargeable qq part,
reste à spécifier où et comment on le fait.
Le 19 mai 2009 17:27, Committo,Ergo:sum <esj@rezo.net> a écrit :
Le 19 mai 09 à 17:12, Fil a écrit :
C'est l'inverse ici: il faudrait is_iso_8859_1 etc,
!is_utf8() => importer depuis iso-latin1
??? Je me trompe où c'est un réflexe franco-français ? Sur un CSV
serbo-croate, ça va donner quoi ?
tu veux dire qu'il vaut mieux obliger de taper charset=xxx que d'avoir
une valeur par défaut couvrant 99% des cas ?
non, mais que de donner l'impression qu'on ne pense qu'à soi, oui.
Maintenant, d'accord pour l'idée d'une valeur par défaut surchargeable qq
part,
reste à spécifier où et comment on le fait.
ce que je proposais, c'est qu'en l'absence de charset indiqué, le filtre
detecte avec !is_utf8(), ce qui sera bon "en général", mais que si un
charset est explicité comme tu l'a indiqué (par un parametre du modèle),
c'est ce charset qui est pris.
Ainsi, dans les cas où la détection echouera, il restera possible de forcer
le charset comme tu le propose.
Cédric
ce que je proposais, c'est qu'en l'absence de charset indiqué, le filtre detecte avec !is_utf8(), ce qui sera bon "en général", mais que si un charset est explicité comme tu l'a indiqué (par un parametre du modèle), c'est ce charset qui est pris.
Ainsi, dans les cas où la détection echouera, il restera possible de forcer le charset comme tu le propose.