Если я введу «åäö» и сохраню правку (используя p: celleditor), таблица в базе данных будет содержать «Ã ¥ äö»
Это типичное представление CP1252 кодированных символов UTF-8.В UTF-8 эти символы представлены следующими байтами:
Если вы посмотрите эти шесть отдельных байтов в макете кодовой страницы CP1252 , вы увидите, что они представляют именно эти символы åäö
.
JSF / Facelets по умолчаниюкодировке UTF-8, когда речь идет о генерации ответа HTML и обработке запросов POST.Этот атрибут XML encoding
действительно ничего не меняет.Он просто сообщает анализатору XML, в какой кодировке символов вы написали / сохранили файл, чтобы он мог проанализировать его с правильной кодировкой символов.
Изменение кодировки символов ответа HTML и обработка запросов POSTэто можно сделать, установив атрибут encoding
корневого тега представления <f:view>
:
<f:view encoding="CP1252">
Но я категорически не рекомендую это.Таким образом, вы отступаете от универсальной кодировки символов, которая поддерживает более миллиона символов, до проприетарной кодировки символов, которая поддерживает не более 255 символов и понятна только для платформ Windows.Посетители веб-страниц, использующие Mac / Linux или любую другую операционную систему, не смогут правильно интерпретировать ответ HTML в этой кодировке символов и не смогут отправить данные обратно в эту кодировку символов.Ваше веб-приложение не будет готово к успешному мировому господству.
Вам нужно решить эту проблему по-другому.Очевидно, что ваша база данных должна быть изменена для поддержки UTF-8.Как именно это сделать, ответить невозможно, потому что вы ничего не сказали о марке / версии БД.Но изменение кодировки символов БД / таблицы должно зависеть от некоторых команд SQL.Или, если вы экспериментируете, просто обрезая БД и воссоздавая ее с правильной кодировкой.Подробнее см. Руководство по SQL для конкретных БД.
См. Также: