Расширения PrimeFaces CKEditor: попытки установить кодировку UTF-8 безуспешны - PullRequest
3 голосов
/ 06 января 2020

Почему я использую этот редактор:

В прошлом я использовал PrimeFaces p:editor, который, однако, устарел и не имеет функций, которые отчаянно нужны пользователям. Я не могу использовать новые PrimeFaces p:textEditor из-за этого: Primefaces textEditor: преобразование текста в HTML с JavaScript не работающим .

Что это такое используется для:

Я использую pe:ckEditor из PrimeFaces Extensions в моей программе, в которой пользователь использует редактор для создания содержимого сообщения электронной почты. Затем, нажав на кнопку отправки, HTML из редактора берется и отправляется клиенту по электронной почте.

В чем проблема:

При использовании p:editor я получил функцию HTML по JavaScript saveHTML, и она отлично работала, даже если текст содержал чешские символы (ěščřžýáíéó ), Мне даже не пришлось устанавливать enconding или что-то еще, и это работало. Однако теперь, когда пользователь пишет "В поисках подробностей о том, что вы хотите получить информацию" , полученный HTML имеет такой текст: "V pÅípadÄ dalších dotazů nás můžete obracet každý den na telefonním Äísle " - полный текст sh, который пользователь явно не может отправить клиенту ...

Мое исследование:

РЕДАКТИРОВАТЬ: На основе в некоторых комментариях я пытался добавить <meta charset="utf-8> и <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">, но это не помогло. В pom.xml я нашел также этот <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>, поэтому я не думаю, что есть проблема на странице HTML, но в настройках самого редактора ...

Итак, я понял, что кодировка должна быть установлена ​​специально для редактора в его конфиге. Я наконец понял, , как заставить редактор получить доступ к пользовательской конфигурации , но ничего, что я нашел в Inte rnet и добавил в конфигурацию, не сработало для меня:

config.language='cs';

А:

config.entities_latin = false;

А:

config.entities = false;

А:

config.basicEntities = false;

И все его комбинации.

ДРУГОЕ РЕДАКТИРОВАНИЕ :

Основываясь на некоторых других комментариях здесь, я также установил OmniFaces и попытался решить эту проблему с помощью CharacterEncodingFilter, но ничего не изменилось и все еще не работает.

Я также обнаружил, что моя проблема, похоже, очень связана с этой проблемой: Ввод Unicode, полученный через входные компоненты PrimeFaces, поврежден , но принятый ответ дает 3 способа ее решения. один из них - CharacterEncodingFilter, другой способ не применим для пользователей Tomcat (я), и последнее «решение», по-видимому, сообщает об этом разработчикам PrimeFaces Extensions (что я и сделал: https://github.com/primefaces-extensions/primefaces-extensions.github.com/issues/756).

Пожалуйста, дайте мне знать, если вы знаете, как это исправить или есть какие-то обходные пути.


PrimeFaces Extensions - версия 7.0.2; PrimeFaces - версия 7.0.7

1 Ответ

3 голосов
/ 08 января 2020

Я и мой коллега выяснили, в чем проблема, на основе тестового кода , который @melloware предоставил . Оригинальный редактор p:editor, который мы использовали и который мы пытаемся заменить на pe:ckEditor, мог предоставить нам его содержимое в HTML только в том случае, если мы использовали JavaScript function saveHTML. Но с pe:ckEditor каждый раз, когда пользователь нажимает кнопку Отправить , чья onstart содержит saveHTML, saveHTML повредила содержимое. Как только мы стерли saveHTML и взяли содержимое pe:ckEditor, как оно было (которое уже есть в HTML), все было в порядке без искаженных символов.

...