jsf - 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
解决方案
我和我的同事根据@melloware 提供的测试代码发现了问题所在。
原来的编辑器p:editor
,我们一直在使用,我们正试图用它来代替pe:ckEditor
,只有在我们使用 JavaScript 函数的情况下,它才能为我们提供 HTML 格式的内容saveHTML
。
但是pe:ckEditor
,只要用户点击包含 的“发送”按钮,内容就会被破坏。一旦我们删除并获取内容(已经在 HTML 中),没有损坏的字符就可以了。onstart
saveHTML
saveHTML
saveHTML
pe:ckEditor
推荐阅读
- python - GNU 屏幕:连接已关闭
- java - 使用 JavaFX 和场景构建器创建特定的用户界面设计
- javascript - 在代码中将多个 tiff 合并为多页 tiff 的包或任何其他方式
- java - 如果应用程序包含 @KafkaListener 注释,则 SpringBootTest 失败
- spring - 登录后如何为当前用户添加新角色
- bash - 在后台从 Bash 脚本启动进程,然后将其带到前台
- javascript - 如何使网格中的每个框都响应 on('click')?
- javascript - 当在 Menu 组件中定义 Route 时,组件不会被渲染
- sql - 在 Postgres 中将时间戳转换为 unix_timestamp
- javascript - 用于 Jest 测试的模拟文档