Проблема кодировки символов в Spring MVC и HTML-форме - PullRequest
0 голосов
/ 16 декабря 2011

Я работаю с весны MVC. Я создал веб-форму, которая имеет два простых текстовых ввода. На контроллере я использую @ModelAttribute, чтобы позволить Spring собирать bean-компонент из веб-формы.

Проблема возникает, когда пользователь помещает в эти текстовые поля специальные символы, такие как 酒店 и тому подобное, Spring не читает его как utf-8, и они становятся обычной неправильно закодированной строкой.

Я проверил web.xml и есть фильтр кодировки utf-8, все страницы помечены как utf-8, и браузер отправляет правильные заголовки кодировки. Есть идеи о том, что происходит?

Ответы [ 2 ]

0 голосов
/ 19 августа 2012

this blog объясните решение вашей проблемы

решение простое, добавив производит = "text / plain; charset = UTF-8", чтобы запросить отображение, вы можете принудительно заставить Spring MVCкодировать возвращаемый текст.

0 голосов
/ 06 января 2012

Вы можете проверить это: http://forum.springsource.org/showthread.php?81858-ResponseBody-and-UTF-8

Суть в том, что если вы используете аннотированные методы, то используемый конвертер сообщений имеет набор символов по умолчанию.Вы можете изменить этот параметр в своем файле web.xml, установив поддерживаемые типы носителей.

Однако, если вашей службе не нравится этот тип носителя, вы можете получить ошибку 406.Вы можете создать свой собственный конвертер строковых сообщений и установить кодировку по умолчанию, но это не так просто с помощью встроенного HttpStringMessageConverter.

Альтернативно вы можете перекодировать строку в другой набор символов:

String newresponse = new String(responseString.getBytes("ISO-8859-1"), "UTF-8"); 

Вы также можете проверить соответствующий вопрос здесь: Как заставить UTF-8 работать в веб-приложениях Java?

...