Я создаю веб-сервис и у меня есть узел, который принимает POST для создания нового ресурса. Ресурс ожидает один из двух типов контента - формат XML, который я буду определять, или переменные в кодированной форме.
Идея состоит в том, что приложения-потребители могут напрямую POST XML и получают выгоду от лучшей проверки и т. Д., Но есть также HTML-интерфейс, который будет POST-кодирование форм. Очевидно, что формат XML имеет декларацию charset, но я не вижу, как определить кодировку формы, просто глядя на POST.
Типичный пост в форме от Firefox выглядит так:
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
Который, кажется, не содержит каких-либо полезных указаний для набора символов.
Из того, что я вижу, тип application / x-www-form-urlencoded полностью определен в HTML, который просто излагает правила% -encoding, но ничего не говорит о том, в какой кодировке должны находиться данные .
В принципе, есть ли способ сообщить набор символов, если я не знаю, какой набор символов был изначально представлен HTML? В противном случае мне придется попытаться угадать набор символов, основываясь на том, какие символы присутствуют, и это всегда немного неверно из того, что я могу сказать.