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 中), 就可以了,没有损坏的字符。
我为什么使用这个编辑器:
过去我使用 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 页面没有问题,但在编辑器本身的设置中...
所以我想,必须在其配置中特别为编辑器设置编码。我终于想通了
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 中), 就可以了,没有损坏的字符。