2013-07-10 3 views
1

У меня есть форма с Primefaces. Заголовок файла XML выглядит следующим образом:Декодирование Java Char/String

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 

Когда я отправить форму, я беру значения с HttpServletRequest:

public String handleRequest(HttpServletRequest request) {  
    String shortname = request.getParameter("shortname"); 
    (...) 

Теперь, когда shortname содержит umlaute, например ü , умлаут будет сохранен в кодировке UTF-8. Итак, мои ü сохраняются как ¼.

Как его декодировать снова? Все учебники используют байтовый массив, но у меня его нет.

Мне нужна эта переменная в EMail, и с некоторыми иероглифами это выглядит не очень хорошо.

+2

Что произойдет, если вы переопределить кодировку запрос перед вызовом getParameter? например вызов 'request.setCharacterEncoding (" UTF-8 ");'? –

+0

Haha какой. Как это просто ?! Отлично! Вы можете отправить ответ, и я приму его. –

+0

Повторно опубликован как ответ. Рад, что это помогло. –

ответ

2

Вы должны указать экземпляр HttpServletRequest, что это в кодировке UTF-8:

public String handleRequest(HttpServletRequest request) {  
    try { 
     request.setCharacterEncoding("UTF-8"); 
     String shortname = request.getParameter("shortname"); 

     (...) 
    } 
    catch (UnsupportedEncodingException e) { 
     // ... 
    } 
} 
+1

Еще раз спасибо! BTW, 'setCharacterEncoding' должен быть окружен try/catch :) –

+0

Да, вы правы. Обслуживает меня правильно, потому что на самом деле не компилирую первый :) –

Смежные вопросы