users@jersey.java.net

Re: [Jersey] Multipart Form And Encoding

From: Paul Sandoz <Paul.Sandoz_at_Sun.COM>
Date: Mon, 02 Nov 2009 14:47:56 +0100

On Nov 2, 2009, at 2:31 PM, Jordi Domingo wrote:

> Hi Paul,
>
> My clients are normal browser right now, how can i make them to
> declare the content-type for each part?

I do not know. If the Content-Type is absent then it means a content
type of "text/plain". But under those conditions (unless out of band
information is utilized) one has to assume the content is encoded in
UTF-8.

The only clue that ISO-8859-1 is utilized is the following in the
logged output of the POST request:

   Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

:-(

Paul.

>
> Thanks,
>
> JOrdi
>
> > Date: Mon, 2 Nov 2009 13:40:38 +0100
> > From: Paul.Sandoz_at_Sun.COM
> > To: users_at_jersey.dev.java.net
> > Subject: Re: [Jersey] Multipart Form And Encoding
> >
> >
> > On Nov 2, 2009, at 12:04 PM, Paul Sandoz wrote:
> >
> > > Hi Jordi,
> > >
> > > I have verified there is a bug in the FormDataBodyPart.getValue
> > > method. It is ignoring the charset parameter (if present) on the
> > > media type.
> > >
> > > In fact this method is doing it's own string parsing when it
> should
> > > be deferring to the string reader provided of the message body
> reader.
> > >
> >
> > I fixed the above.
> >
> > So if your client is sending multipart/form content with the
> > ISO-8859-1 charset declared appropriately in the Content-Type of
> > relevant body parts it should work.
> >
> > If you are using Jersey's FormDataMultiPart on the client side you
> > will have to do something like:
> >
> > new FormDataMultiPart().field("name", "value",
> > MediaType.valueOf("text/plain;charset=ISO-8859-1"));
> >
> > otherwise if you use the "field" method with two String parameters
> > then UTF-8 will be used to encode the String characters. And note
> that
> > if the charset parameter is absent when decoding then UTF-8 will be
> > used to decode to String characters.
> >
> > Paul.
> >
> > > Can you:
> > >
> > > 1) verify there is a charset parameter present on the Content-Type
> > > of the body part identified as "name"; and
> > >
> > > 2) try doing the following and seeing if that works (which depends
> > > on a charset parameter with a value of "ISO-8859-1" being present)
> > >
> > > multiPart.getField("name").getValueAs(String.class);
> > >
> > > Paul.
> > >
> > >
> > >
> > > On Nov 2, 2009, at 11:49 AM, Jordi Domingo wrote:
> > >
> > >> Hi,
> > >>
> > >> I've got some problems with char encoding using multipart API.
> I've
> > >> been able to solve this in my pc using:
> > >>
> > >> String name = multiPart.getField("name").getValue();
> > >> name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
> > >>
> > >> But in production it is not working. Chars like àáèéìí ... are
> > >> shown like ??
> > >>
> > >> Any help is appreciated. Thanks,
> > >>
> > >> Jordi
> > >>
> > >> Entra al Nuevo Canal Motor y descubre por qué los coches más
> > >> rápidos sólo aparcan en MSN. Nuevo diseño, más completo y
> abierto a
> > >> tu opinión.¡Nuevo Canal Motor!
> > >
> > >
> > >
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> > > For additional commands, e-mail: users-help_at_jersey.dev.java.net
> > >
> >
> >
> >
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> > For additional commands, e-mail: users-help_at_jersey.dev.java.net
> >
>
> En tu material escolar no puede faltar el nuevo Pack de Emoticonos
> Vuelta al Cole ¡Descárgatelo gratis! Es muy divertido