You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-fr@cocoon.apache.org by BRAUD Denis <DB...@micropole-univers.com> on 2005/11/07 18:52:50 UTC
form-encoding
Bonjour,
J'ai vu avec Cocoon que l'on peut positionner un form-encoding par défaut (web.xml : <param-name>form-encoding</param-name>).
Ce paramètre sert à initialiser la request (cf. CocoonServlet.getEnvironment : this.defaultFormEncoding).
Je rencontre des cas où cette définition par défaut n'est pas suffisante car je ne peux pas définir un form-encoding valable pour tous les terminaux qui utilisent ma webapp.
Pourquoi ne pas utiliser sur CocoonServlet.getEnvironment, le Http Header Accept-Charset pour déterminer le form-encoding (cf. méthode getFormEncoding ci après) ?
Denis
---------------------------------------------------------------
getFormEncoding
acceptCharset : récupéré via request.getHeader("Accept-Charset")
Ce champs a 2 formes :
-utf-8, utf-16, iso-8859-1, *
-utf-8;q=1.0, utf-16;q=0.5, iso-8859-1, *
containerSupportedEncodings : Liste des encodings supportés par le container
Pourrait venir de web.xml :
<init-param>
<param-name>container-supported-encodings</param-name>
<param-value>utf-8,iso-8859-1</param-value>
</init-param>
public static String getFormEncoding(
String acceptCharset,
List containerSupportedEncodings,
String defaultFormEncoding) {
if (containerSupportedEncodings == null || acceptCharset == null) {
return defaultFormEncoding;
}
String formEncoding = null;
String[] formEncodings = org.apache.commons.lang.StringUtils.split(
acceptCharset, ",");
for (int i = 0; i < formEncodings.length; i++) {
formEncoding = formEncodings[i];
int commaPos = formEncoding.indexOf(';');
if (commaPos != -1) {
formEncoding = formEncoding.substring(0, commaPos);
}
formEncoding = formEncoding.trim().toLowerCase();
if (containerSupportedEncodings.contains(formEncoding)) {
return formEncoding;
}
}
return defaultFormEncoding;
}
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org
Re: form-encoding
Posted by Sylvain Wallez <sy...@apache.org>.
BRAUD Denis wrote:
> Bonjour,
>
> J'ai vu avec Cocoon que l'on peut positionner un form-encoding par défaut (web.xml : <param-name>form-encoding</param-name>).
> Ce paramètre sert à initialiser la request (cf. CocoonServlet.getEnvironment : this.defaultFormEncoding).
>
> Je rencontre des cas où cette définition par défaut n'est pas suffisante car je ne peux pas définir un form-encoding valable pour tous les terminaux qui utilisent ma webapp.
>
> Pourquoi ne pas utiliser sur CocoonServlet.getEnvironment, le Http Header Accept-Charset pour déterminer le form-encoding (cf. méthode getFormEncoding ci après) ?
>
L'entête Accept-Charset est différent de l'encoding qui est nécessaire
pour décoder les paramètres d'un formulaire.
Par exemple, une capture d'un POST dans Firefox me donne:
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
C'est le Content-Type qui donne la bonne info, et qui devrait être
utilisé plutôt qu'une valeur en dur. Je me demande si les moteurs de
servlets ne le prennent pas déjà en compte, auquel cas il faudrait que
Cocoon s'en abstienne...
Au passage, IE 6 et Safari ne transmettent pas l'entête Accept-Charset...
Sylvain
--
Sylvain Wallez Anyware Technologies
http://people.apache.org/~sylvain http://www.anyware-tech.com
Apache Software Foundation Member Research & Technology Director
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org