Detectando a codificação de caracteres de uma solicitação HTTP POST

Estou construindo um serviço da web e tenho um nó que aceita um POST para criar um novo recurso. O recurso espera um dos dois tipos de conteúdo - um formato XML que definirei ou variáveis codificadas por formulári

A idéia é que aplicativos de consumo podem POST XML diretamente e se beneficiar de uma melhor validação, etc. Obviamente, o formato XML possui uma declaração de conjunto de caracteres, mas não consigo ver como detecto o conjunto de caracteres do formulário apenas olhando para o POST.

Uma postagem típica para o formulário do Firefox fica assim:

POST /path HTTP/1.1
Host: www.myhostname.com
User-Agent: Mozilla/5.0 [...etc...]
Accept: text/html,application/xhtml+xml, [...etc...]
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 41

field1=value1&field2=value2&field3=value3

O que parece não conter nenhuma indicação útil do conjunto de caractere

Pelo que posso ver, o tipo application / x-www-form-urlencoded é totalmente definido em HTML, que apenas estabelece as regras de codificação%, mas não diz nada sobre o conjunto de caracteres em que os dados devem estar.

Basicamente, existe alguma maneira de informar o conjunto de caracteres se eu não souber o conjunto de caracteres que o HTML originalmente apresentou? Caso contrário, terei que adivinhar o conjunto de caracteres com base em quais caracteres estão presentes, e isso é sempre um pouco duvidoso do que se

questionAnswers(3)

yourAnswerToTheQuestion