Charset des formulaires multipart/form-data
Bonjour,
je vais essayer d'être clair mais c'est pas gagné.
J'ai un formulaire à partir duquel on peut poster des fichiers + du texte.
Le texte envoyé est en UTF-8.
Or mon serveur applicatif (TOMCAT, JAVA/JSP) essaye de lire les données du formulaire en ISO-8859. Enfin je pense! toujours est il que si je ne touche à rien, je me retrouve avec des caractère corrompus.
Alors que si je fais :
Code:
monString = new String(monString(getBytes),"UTF-8");
Là les caractères sont ok! Donc c'est bien de l'UTF-8.
Mais j'ai pas envie de faire comme ça!!!
Donc j'ai mis en place un filtre qui fait :
Code:
req.setCharacterEncoding("UTF-8");
qui fonctionne très bien pour les formulaires type "application/x-www-form-urlencoded".
Mais avec des fichiers, je suis obligé d'avoir un formulaire de type : "multipart/form-data" et là le filtre n'a pas d'effet.
J'ai donc lu la RFC 2388
Citation:
4.5 Charset of text in form data
Each part of a multipart/form-data is supposed to have a content-
type. In the case where a field element is text, the charset
parameter for the text indicates the character encoding used.
For example, a form with a text field in which a user typed 'Joe owes
<eu>100' where <eu> is the Euro symbol might have form data returned
as:
--AaB03x
content-disposition: form-data; name="field1"
content-type: text/plain;charset=windows-1250
content-transfer-encoding: quoted-printable
Donc, il faudrait spécifier pour chaque champ, le content-type et le charset!
OUI MAIS COMMENT???
Moi quand je regarde ce que j'envoie j'ai ça :
Citation:
-----------------------------11080729823391
Content-Disposition: form-data; name="lblDossier"
ééééééééé
-----------------------------11080729823391
Content-Disposition: form-data; name="fichier_1"; filename="align_milieu.JPG"
Content-Type: image/jpeg
Donc il manque le content-type et le charset pour mon champ "lblDossier"! Ils ne sont pas obligatoires et quand ils sont non présents, le serveur choisit. Et j'imagine qu'en l'occurence, TOMCAT choisit "ISO 8859"...
Bref je voudrais savoir comment forcer ces valeurs!
Merci à vous :-)
PS : voici mon code de la "vue" :
Code:
<form method="post" action="..." name="..." enctype="multipart/form-data" accept-charset="utf-8" >
Code:
<input type="text" name="lblDossier" />
Code:
<input type="file" name="fichier_1" />
Probleme d'encodage avec enctype="multipart/form-data"
Je pense q'il faut essayer ça
Code:
1 2 3
| <h:form prependId="false" id="formGlobal" acceptcharset="ISO-8859-1" enctype="multipart/form-data">
... Le contenu de ton formulaire est ici (Texte+fichier a uploader)
</h:form> |