PrimeFaces Extensions CKEditor:尝试将编码设置为 UTF-8 失败

PrimeFaces Extensions CKEditor: attempts to set encoding to UTF-8 unsuccessful

我为什么使用这个编辑器:

过去我使用 PrimeFaces p:editor which is however deprecated and lacks functions that the users desperately want. I cannot use the new PrimeFaces p:textEditor because of this:

有什么用:

我在我的程序中使用来自 PrimeFaces Extensions 的 pe:ckEditor,其中用户使用编辑器创建电子邮件消息内容。然后通过单击发送按钮,来自编辑器的 HTML 被获取并通过电子邮件发送给客户。

问题是什么:

当使用 p:editor 时,我通过 JavaScript 函数 saveHTML 获得了 HTML,即使文本包含捷克字符 (ěščřžýáíéó),它也能完美运行,我做到了甚至不必设置 enconding 或其他任何东西,它就起作用了。 但是现在当用户写 "V případě dalších dotazů se na nás můžete obracet každý den na telefonním čísle" 时,得到的 HTML 有这样的文本:"V pÅípadÄ dalších dotazů se na nás můžete obracet každý den na telefonním Äísle" -用户显然无法发送给客户端的完整垃圾...

我的研究:

编辑:根据一些评论,我尝试添加 <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 页面没有问题,但在编辑器本身的设置中...

所以我想,必须在其配置中特别为编辑器设置编码。我终于想通了 ,但是 我在 Internet 上找到并添加到配置中的任何东西都不适合我:

config.language='cs';

并且:

config.entities_latin = false;

并且:

config.entities = false;

并且:

config.basicEntities = false;

及其所有组合。

另一个编辑:

根据此处的一些其他评论,我还安装了 OmniFaces 并尝试通过 CharacterEncodingFilter 解决此问题,但没有任何改变,它仍然无法正常工作。

我还发现我的问题似乎与这个问题非常相关:Unicode input retrieved via PrimeFaces input components become corrupted, but the accepted answer there gives 3 ways how to solve it, one is the CharacterEncodingFilter, other way is not applicable for Tomcat users (me) and the last "solution" seems to be reporting this to PrimeFaces Extensions developers (which I did: https://github.com/primefaces-extensions/primefaces-extensions.github.com/issues/756)。

如果您知道如何解决这个问题或有任何解决方法,请告诉我。


PrimeFaces 扩展 - 版本 7.0.2; PrimeFaces - 版本 7.0.7

我和我的同事根据 test code that @melloware provided 发现了问题所在。

我们一直在使用的原始编辑器 p:editor,我们正试图用 pe:ckEditor 替换它,只有在我们使用 JavaScript 的情况下才能在 HTML 中为我们提供其内容函数 saveHTML.

但是对于 pe:ckEditor,只要用户点击 发送 按钮,其 onstart 包含 saveHTML saveHTML 破坏了内容。一旦我们擦除 saveHTML 并按原样获取 pe:ckEditor 内容(已经在 HTML 中), 就可以了,没有损坏的字符。