为什么我使用这个编辑器:
过去,我使用PrimeFacesp:editor
但是它已被弃用并且缺少用户迫切需要的功能。我不能使用新的PrimeFacesp:textEditor
,因为:Primefaces textEditor:使用JavaScript将文本转换为HTML,不起作用。
它的用途是什么:
我在我的程序中使用PrimeFaces Extensions的pe:ckEditor
,其中用户使用编辑器来创建电子邮件内容。然后通过单击发送按钮,从编辑器中获取HTML并通过电子邮件发送到客户端。
问题是什么:
使用p:editor
时,我得到了 HTML by JavaScript 函数saveHTML
,即使文本包含捷克字符 (ěščřžýáíéó(,它也能完美运行,我什至不必设置 enconding 或其他任何东西,它就可以工作了。 然而,现在当用户写"V případě dalších dotazů se na nás můžete obracet každý den na telefonním čísle"时,gotten HTML的文本如下:">V pÅípadÄ dalších dotazÅ ̄ se na nás mÅ ̄Å3/4ete obracet kaÅ3/4dý 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页面有问题,而是编辑器本身的设置......
所以我认为,编码必须特别针对编辑器在其配置中设置。我终于想出了如何让编辑器访问自定义配置,但我在互联网上找到并添加到配置中的任何内容都对我有用:
config.language='cs';
和:
config.entities_latin = false;
和:
config.entities = false;
和:
config.basicEntities = false;
以及它的所有组合。
另一个编辑:
根据这里的其他一些评论,我还安装了 OmniFaces 并试图通过CharacterEncodingFilter
来解决这个问题,但没有任何变化,它仍然无法正常工作。
我还发现我的问题似乎与这个问题非常相关:通过PrimeFaces输入组件检索的Unicode输入已损坏,但是那里接受的答案给出了3种解决方法,一种是CharacterEncodingFilter
,另一种方法不适用于Tomcat用户(我(,最后一个"解决方案"似乎将此报告给PrimeFaces Extensions开发人员(我做到了: https://github.com/primefaces-extensions/primefaces-extensions.github.com/issues/756(。
如果您知道如何解决此问题或是否有任何解决方法,请告诉我。
PrimeFaces 扩展 - 版本 7.0.2; PrimeFaces - 版本 7.0.7
我和我的同事根据@melloware提供的测试代码找出了问题所在。
原始编辑器p:editor
,我们一直在使用并试图用pe:ckEditor
替换它 ,只有在我们使用 JavaScript 函数的情况下,才能为我们提供 HTML 格式的内容saveHTML
.
但是有了pe:ckEditor
,每当用户点击发送按钮时,其onstart
包含saveHTML
,saveHTML
破坏了内容。一旦我们删除了saveHTML
并按原样获取了pe:ckEditor
内容(已经在 HTML 中(,没有损坏的字符就很好了。