Проблема с кодировкой Facelets - PullRequest
1 голос
/ 09 июня 2010

В моем более раннем посте была проблема с обработкой кодировки JSF, но также другой частью проблемы были параметры соединения MySQL для вставки данных в базу данных. Проблема была решена.

Но я перенес то же приложение из JSP в facelets, и та же проблема возникла снова. Символы из полей ввода заменяются при вставке в базу данных (č заменяется на Ä), но данные, вставленные в db из сценариев sql с правильной кодировкой, отображаются правильно. Я все еще использую зарегистрированный фильтр, а шаблоны страниц используются с метатегом head следующим образом:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2">

Если я вставлю в тег h: form следующий атрибут:

acceptcharset="iso-8859-2"

Я получаю правильные символы в Firefox, но не в IE7.

Что-нибудь еще, что я должен сделать, чтобы это работало?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 09 июня 2010

Добавьте следующую строку в фильтр:

response.setContentType("text/html;charset=ISO-8859-2");

Не использовать атрибут acceptcharset.В IE есть серьезные ошибки.

Кроме того, когда вы используете объявление <?xml?> в верхней части страницы Facet XHTML, убедитесь, что оно использует желаемую кодировку, или просто удалите всю декларацию, это не обязательно.

<?xml version="1.0" encoding="ISO-8859-2"?>
0 голосов
/ 10 июня 2010

Я думаю, что вы можете увидеть реализацию org.springframework.web.filter.CharacterEncodingFilter, и вы можете запустить свой кот, добавив -Dfile.encoding = ISO-8859-2 в качестве аргументов jvm

...