Всем дорый день.Вопрос связан с русскими буквами.
Значит ситуация следующая:
Есть веб приложение, на основе стратса.
В нем есть jsp-шка в которой есть форма с полем ввода. если я в этом поле ввода ввожу слово из русских букв, то уже внутри стратсовского акшина я получаю не это слово а билеберду.
К слову сказать, эту билеберду я могу преобразовать в нормальное слово с помощью "хитроумной" комбинации:
String rusStr = new String(tstForm.getName().getBytes("ISO8859-1"), "UTF-8");
Чтобы не делать подобных извращений с каждым полем, я создал фильтр, в котором в методе doFilter(....) делаю следующее:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(request, response);
}
После чего начинает все работать.
На самом деле проблема естественно не в маленьком тестовом приложении, а в большом-жирном. И подобные действия только один из шагов.
Сейчас мне необходимо понять каким образом данные из реквеста преобразовываются в русские слова.
Т.е. если взять InputStream у реквеста:
servletRequest.getInputStream()
ну и вытянуть из него поток байт, то сохранив эти байты в файл получаем следующий контент файла:
name=%D1%84&count=445
В браузере на форме я вводил:
name = ф
count = 445
Таким образом подстрока "%D1%84" преобразовывается в "ф".
Собственно вопрос в том как происходит подобное преобразование ("%D1%84" -> "ф")?
Спасибо.