我有一个用户输入内容的CKEDITOR实例(版本4.5.7)。此内容将使用归类SQL_Latin1_General_CP1_CI_AS
发布到数据库字段。
当用户从Word或类似的富文本编辑器粘贴文本时,问题就出现了。特别是两个字符在访问数据库时会出现格式错误:” (”)
和– (–)
。
我已将config.entities
设置为false
,以防止将字符转换为HTML等效字符。现在我正在寻找一个可以拦截进程来查找/替换任何违规字符的地方。虽然这类东西的javascript很容易(text = text.replace('”', '"')
),但我不知道在哪里放置它以实现这一点。我已经尝试将它放在CKEDITOR.htmlParser.basicWriter函数中的不同位置,但到目前为止没有任何工作。
这似乎是一个相当常见的问题 - 是否有一种方法可以在编辑器上设置排序规则,使其与数据库匹配?
感谢您的任何建议。
答案 0 :(得分:0)
我一直在使用basicWriter函数,直到最后我惊讶地发现一个地方确实有效。基本上,这是我用来解决这个问题的过程而不编辑ckeditor.js
CKEDITOR.htmlParser.basicWriter
函数复制到config.js文件的底部。这基本上重新定义了该功能,覆盖了真正的功能,但允许我们对其进行自定义,而不必破坏未来的更新。html
变量。以下是帮助您找到此部分的模板getHtml: function( reset ) {
var html = this._.output.join( '' );
// this is where we can replace individual characters or make other
// customizations
html = html.replace('”', '"');
html = html.replace('–', '-');
if ( reset )
this.reset();
return html;
}