У меня возникла проблема, с которой мне нужна помощь:
Мы выполняем вызов веб-службы http GET из приложения для смартфона в приложение Java/Spring MVC. Мы находимся на сервере приложений Tomcat, перед которым находится сервер Apache с настройкой прокси-сервера mod_proxy.
Одним из параметров, встроенных в URL-адрес, является слово «Männen», которое является названием организации, которое является одним из параметров. Приложение выполняет запрос Jquery Ajax GET, и параметр оставляет приложение как «M%E4nnen», что, насколько я понимаю, означает, что «ä» правильно закодирован в URL-адресе. Когда он поступает на контроллер Spring, он искажается до «Männen».
Я погуглил и нашел довольно много тем по этому поводу, и все они рекомендуют изменить файл Tomcat server.xml, добавив URIEncoding="UTF-8" ко всем соединителям. Конечно, я попробовал это. Это внесло изменения, но не решило проблему. Строка теперь звучит как «M�nnen». Также была тема, в которой предлагалось добавить «nocanon» к параметру ProxyPass в конфигурации прокси-сервера Apache. Это было опробовано, но безрезультатно.
Используя журналы, я могу выполнить запрос:
- В журнале доступа Apache параметр регистрируется как «M%E4nnen»
- В журнале прокси-сервера Apache параметр регистрируется как «M%E4nnen»
- В журнале Tomcat localhost_access параметр регистрируется как «M%E4nnen»
- В контроллере Spring, который получает запрос, параметр регистрируется как «M�nnen»
Код: Выделить всё
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
CharacterEncodingFilter
/*
Подробнее здесь: https://stackoverflow.com/questions/186 ... -parameter
Мобильная версия