Зашифровано? Ты шутишь. Скорее всего, вы имели в виду Mojibake.
Чтобы избежать Mojibake, вам необходимо убедиться, что вы используете одну и ту же кодировку символов во всем приложении при создании и использовании символов. В наши дни UTF-8 — разумный выбор, если вы хотите мирового господства. JSF2 уже все время по умолчанию использует UTF-8. Так что ваша проблема несколько странная.
Возможно, вы на самом деле используете PrimeFaces? Известно, что кодировка символов UTF-8 по умолчанию искажается при запуске запроса ajax. На эту часть отвечает здесь, вам нужно создать фильтр сервлета.
Или, может быть, значение на самом деле правильное, но вы печатаете значение на вывод, который вообще не поддерживает UTF-8, и поэтому вы неправильно определили причину проблемы? Например. через System.out.println()
в консоли Eclipse. Вам нужно будет настроить его через Окно> Настройки> Общие> Рабочая область> Кодировка текстового файла, как указано в ответе здесь.
Или, возможно, вы явно заставили кодировку JSF2 измениться на что-то другое с помощью <f:view encoding>
, например. до ISO-8859-1
. Вы не должны этого делать, удалите атрибут encoding
из <f:view>
и оставьте его по умолчанию.
Или, возможно, ваша кодировка базы данных/таблицы MySQL вообще не является UTF-8, но это не будет соответствовать симптомам проблемы, которые вы описали, или вы, должно быть, пропустили часть, в которой вы фактически печатаете значение, полученное из БД, вместо значение, полученное из отправки формы.
В любом случае, все, что вам нужно знать о кодировании символов в веб-приложениях Java EE со всеми возможными проблемами и решениями, подробно описано в Unicode — Как правильно использовать символы?
05.02.2013
[jsf2]
. Но если вы - совершенно неожиданно - на самом деле используете JSP, тогда вам следует установить кодировку страницы (или, лучше, сбросить ее и заменить на Facelets). 05.02.2013