Я думаю, что вы смотрите на это неправильно. Ресурсы, на которые вы ссылаетесь, указывают, какие закодированные значения действительны в (X) HTML , но похоже, что вы хотите проверить «ответ» из веб-формы - как, например, значения различных элементов управления формы, как передано обратно на ваш сервер. В этом случае вы должны смотреть не на то, что действительно в (X) HTML, а на то, что действительно в application / x-www-form-urlencoded и, возможно, также multipart / form- данные , MIME типы. В стандартах HTML 4.01 для <FORM>
элементов четко указано, что для application / x-www-form-urlencoded "не буквенно-цифровые символы заменяются на"% HH "":
Это тип содержимого по умолчанию. Формы, представленные с этим типом содержимого, должны быть закодированы следующим образом:
- Имена и значения элементов управления экранированы. Символы пробела заменяются на «+», а затем зарезервированные символы экранируются, как описано в [RFC1738] , раздел 2.2: не буквенно-цифровые символы заменяются на «% HH», знак процента и две шестнадцатеричные цифры представляющий ASCII-код символа. Разрывы строк представляются в виде пар "CR LF" (т. Е. `% 0D% 0A ').
- Имена / значения элементов управления перечислены в порядке их появления в документе. Имя отделяется от значения символом '=', а пары имя / значение отделяются друг от друга знаком '&'.
Что касается того, какая кодировка символов содержится (т. Е. Является ли %A0
неразрывным пробелом или ошибкой), это согласовывается атрибутом accept-charset
вашего элемента <FORM>
и ответ (ну, на самом деле GET
или POST
запрос) Content-Type
заголовок.