[undertow-dev] UTF8 form parsing

Laurent Bedubourg lbedubourg at gmail.com
Mon Dec 15 01:57:43 EST 2014


Thanks again !

On Mon, 15 Dec 2014 00:06 Stuart Douglas <sdouglas at redhat.com> wrote:

> I have created https://issues.jboss.org/browse/UNDERTOW-356, I will
> probably get to it some time this week.
>
> BTW the reason why it defaults to ISO-8859-1 is because this is what the
> HTTP RFC says is the default, however it appears that in practice often
> browsers don't know the charset.
>
> Stuart
>
> ----- Original Message -----
> > From: "Laurent Bedubourg" <lbedubourg at gmail.com>
> > To: undertow-dev at lists.jboss.org
> > Sent: Saturday, 13 December, 2014 8:54:40 PM
> > Subject: [undertow-dev] UTF8 form parsing
> >
> > Hello,
> >
> > I am using utf-8 as default encoding for the web and it didn't worked
> out of
> > the box with Undertow and EagerFormParsingHandler.
> >
> > It turned out that MultiPartParserDefinition has a default iso-8859-1
> > encoding and that it's quite hard to change it. You have to create a
> custom
> > FormParserFactory containing a MultiPartParserDefinition with the right
> > setDefaultEncoding() that's a lot of work for something that common and I
> > had to spend half an hour looking at Undertow sources to understand how
> it
> > work and why my input was garbage.
> >
> > The assumption that Browsers will add a "; charset=UTF-8" to the Content
> type
> > is false (at least with google chrome).
> >
> > My temporary hack is to override EagerFormParsingHandler and modify the
> > request CONTENT_TYPE header to add the UTF-8 charset and then setNext my
> > real HttpHandler (I had less mental friction doing this than learning
> how to
> > create my custom FormParserFactor).
> >
> > new EagerFormParsingHandler(){
> > override def handleRequest(x:HttpServerExchange){
> > val ct = x.getRequestHeaders().get(Headers.CONTENT_TYPE).getLast()
> > x.getRequestHeaders().put(Headers.CONTENT_TYPE, ct+"; charset=UTF-8")
> > super.handleRequest(x)
> > }
> > }.setNext(new HttpHandler(){
> > def handleRequest(x:HttpServerExchange){ ... }
> > })
> >
> > Now that I know it I can create my own Utf8FormParsingHandler but I
> imagine
> > that other users will want to be able to define the encoding out of the
> box.
> >
> > Maybe with a new self documenting contructor like :
> >
> > new EagerFormParsingHandler(encoding:String, nextHandler:HttpHandler)
> >
> > Best regards
> > Laurent
> >
> > _______________________________________________
> > undertow-dev mailing list
> > undertow-dev at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/undertow-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/undertow-dev/attachments/20141215/887d7baf/attachment-0001.html 


More information about the undertow-dev mailing list