У меня возникла проблема с кодировкой кодировки в моем веб-приложении (JSF 1.2, Spring и Tomcat 7), и у меня закончились идеи о том, что тестировать, чтобы увидеть, где это идет не так.Параметры POST с использованием неправильного кодирования в JSF 1.2
Всякий раз, когда я представить что-то вроде «CA» я получаю «Ã§Ã £»: это означает, что мои данные, перенесенным UTF-8 преобразовываются в ISO-8859-1 где-то в жизненном цикле JSF.
Я знаю, что неправильное преобразование UTF-8 в ISO-8859-1 потому что это тот же выход для:
System.out.println(new String("çã".getBytes("UTF-8"), "ISO-8859-1"));
Я считаю, что неправильно преобразование находится где-то в жизненном цикле JSF (может это быть раньше), потому что я создал валидатор в моем MB:
public void debugValidator(FacesContext context, UIComponent component,
Object object) throws ValidationException {
System.out.println("debug validator:");
System.out.println(object);
System.out.println("\n");
throw new ValidationException("DEBUG: " + object.toString());
}
и его сообщение возвращается как: "DEBUG: çà £"
- У меня есть на всех моих .xhtml страницах первая строка как
<?xml version="1.0" encoding="UTF-8"?>
. - Я использую Facelets, которые в соответствии с BalusC's article использует UTF-8 по умолчанию
- Так что не нужно было, но я настраивал так или иначе, Спринг
CharacterEncodingFilter
в моем web.xml установить кодировку запроса символов в UTF-8. - Я поставил
URIEncoding="UTF-8"
в файле Tomcat вserver.xml
, просто чтобы гарантировать - Это не вина моего браузера, он печатает то же самое в консоли, и мое окружение все UTF-8.
Есть ли у вас какие-либо идеи, что еще можно проверить? Что может быть моим неправильным предположением?
Заранее благодарен!
Привет, BalusC, спасибо за ваш ответ, но я думаю, что это наоборот, вызвать заголовок Content-Type установлен в UTF-8. Теперь, я только что проверил, изменил ли я кодировку в браузере вручную на ISO-8859-1, символы отображаются прямо в сообщении валидатора! Теперь, что это значит? – elias
О Facelets, я использую 1.1.15.B1 кстати. – elias
Возможно ли, что браузер отправляет данные как ISO-8859-1, несмотря на то, что для _Content-type_ установлено значение _text/html; charset = UTF-8_? – elias