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