Описание параметра URIEncoding
в Tomcat 8 - Apache Tomcat 8 - The HTTP Connector:
Это указывает кодировку используется для декодирования байтов URI, после того, как% xx декодирует URL. Если не указано, UTF-8 будет использоваться, если для системного свойства org.apache.catalina.STRICT_SERVLET_COMPLIANCE установлено значение true, и в этом случае будет использоваться ISO-8859-1.
Таким образом, описание было изменено от такового Apache Tomcat 7. Значение по умолчанию org.apache.catalina.STRICT_SERVLET_COMPLIANCE
ложно с Apache Tomcat 8. Таким образом, UTF-8, это значение по умолчанию URIEncoding для Apache Tomcat 8, что означает, что в настоящее время Tomcat следует стандартное (и общее использование).
Как почему Tomcat не используется ISO 8859-1 как кодировку URI по умолчанию до Tomcat 7:
Это, кажется, потому что devevelopers Tomcat считал, что это то, что спецификация Servlet требует (в качестве имени установки STRICT_SERVLET_COMPLIANCE).
На самом деле, спецификация Servlet явно не упоминает кодировку URI в любой версии. Тем не менее, он указывает, что данные POST должны анализироваться как ISO 8859-1, если заголовок HTTP Content-Type
не указывает кодировку через charset
(Спецификация сервлета V2.5, «Запрос кодирования данных»). По-видимому, это было интерпретировано как означающее, что параметры запроса (и, следовательно, весь URI) также должны быть декодированы как ISO 8859-1 по умолчанию.
Корневая проблема, возможно, заключается в том, что в спецификации сервлета не указывается кодировка по умолчанию, используемая для декодирования URI, не говоря уже о способе изменить эту кодировку. Это, в свою очередь, вероятно, связано с тем, что спецификация URI изначально не позволяла использовать символы, отличные от ASCII, в URI - это было стандартизировано только путем введения IRI, см. RFC 3987 с января 2005 года. Поэтому каждый контейнер сервлета должен был иметь свое собственное значение по умолчанию и конфигурацию параметр, такой как URIEncoding
в Apache Tomcat.
Эти две проблемы были зарегистрированы как ошибки против Servlet Спецификация:
Может быть сервлетов спецификации будут изменены в один прекрасный день ...
Вопрос: [Как установить кодировку запроса в Tomcat?] (http: // stackoverflow .com/questions/6876697/how-to-set-request-encoding-in-tomcat) – sleske