CKeditor在源代码中将字符“š”更改为“š”

时间:2017-09-22 20:56:06

标签: ckeditor

对于我的网站,我使用CKeditor添加/编辑内容,我注意到当我在源代码中写字符š时,它会更改为š - 当我在数据库中搜索时会出现问题,所以我是想知道如何解决这个问题,以便该字符将以相同的方式保留在源代码中(未更改)?

我可以通过将此添加到config来解决此问题:

config.entities = false;

但是有了这个,一切都被禁用了(甚至引号,双引号,...现在都没有在源中更改),所以这不是最佳解决方案,对吧?

我也尝试过这些设置,但它们没有帮助:

config.IncludeGreekEntities = false;
config.IncludeLatinEntities = false;

我还能尝试什么?有没有办法手动设置某些字符不应该被转换?

3 个答案:

答案 0 :(得分:0)

如果它导致您的搜索实现出现问题,那么这里不仅仅是一个“š”字符,而是所有可能用于搜索的特殊字符。我认为CKEditor没有配置白名单实体,不应该编码。

我建议在从CKEditor获取数据后解码这些字符,例如:

var map = { 'š': 'š', 'à': 'à' };
editor.getData().replace( /š|à/g, function( m ) { return map[ m ] } );

-----编辑:

要将其与CKEditor集成,可以使用toDataFormat事件:

var editor = CKEDITOR.replace( 'editor1' ),
    map = { 'š': 'š', 'à': 'à' };

editor.on( 'toDataFormat', function( evt ) {
    evt.data.dataValue = evt.data.dataValue.replace( /š|à/g, function( m ) { return map[ m ] } );
}, null, null, 16 );

请参阅working example on codepen

答案 1 :(得分:0)

这个命令似乎有效,我不再遇到š的问题(其他特殊字符仍然被转换 - 就像引用一样,很好):

CKEDITOR.config.entities_latin = false;

答案 2 :(得分:0)

仅从 ckeditor.js 源中删除了“scaron”和“Scaron”。