首页 > 解决方案 > PrimeFaces Extensions CKEditor:尝试将编码设置为 UTF-8 不成功

问题描述

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

过去我使用过 PrimeFaces p:editor,但它已被弃用,并且缺少用户迫切需要的功能。我无法使用新的 PrimeFaces p:textEditor,因为:Primefaces textEditor: convert text to HTML with JavaScript not working

它是干什么用的:

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

问题是什么:

使用 时p:editor,我通过 JavaScript 函数获得了 HTML,saveHTML即使文本包含捷克字符(ěščřžýáíéó),它也能完美运行,我什至不必设置编码或其他任何东西,它也能正常工作。然而,现在当用户编写“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>and<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

标签: jsfprimefacescharacter-encodingckeditorprimefaces-extensions

解决方案


我和我的同事根据@melloware 提供的测试代码发现了问题所在。

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

但是pe:ckEditor,只要用户点击包含 的“发送”按钮,内容就会破坏。一旦我们删除并获取内容(已经在 HTML 中),没有损坏的字符就可以了。onstartsaveHTMLsaveHTMLsaveHTMLpe:ckEditor


推荐阅读