Je suis en train de construire un service web et j'ai un noeud qui accepte un POST pour créer une nouvelle ressource. La ressource attend l'un des deux types de contenu - un format XML que je vais définir, ou des variables codées par formulaire.
L'idée est que les applications consommatrices peuvent POST XML directement et bénéficier d'une meilleure validation, etc., mais il existe également une interface HTML qui POST le contenu codé par formulaire. Il est évident que le format XML comporte une déclaration de jeu de caractères, mais je ne vois pas comment détecter le jeu de caractères du formulaire simplement en regardant le POST.
Un message typique envoyé au formulaire depuis Firefox ressemble à ceci :
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
Qui ne semble pas contenir d'indication utile sur le jeu de caractères.
D'après ce que je peux voir, le type application/x-www-form-urlencoded est entièrement défini dans le HTML, qui ne fait qu'énoncer les règles de codage %, mais ne dit rien sur le jeu de caractères que les données doivent utiliser.
En fait, existe-t-il un moyen de connaître le jeu de caractères si je ne sais pas quel était le jeu de caractères du HTML présenté à l'origine ? Sinon, je dois essayer de deviner le jeu de caractères en fonction des caractères présents, ce qui est toujours un peu incertain d'après ce que je sais.