对于我的网站,我使用CKeditor添加/编辑内容,我注意到当我在源代码中写字符š时,它会更改为š
- 当我在数据库中搜索时会出现问题,所以我是想知道如何解决这个问题,以便该字符将以相同的方式保留在源代码中(未更改)?
我可以通过将此添加到config来解决此问题:
config.entities = false;
但是有了这个,一切都被禁用了(甚至引号,双引号,...现在都没有在源中更改),所以这不是最佳解决方案,对吧?
我也尝试过这些设置,但它们没有帮助:
config.IncludeGreekEntities = false;
config.IncludeLatinEntities = false;
我还能尝试什么?有没有办法手动设置某些字符不应该被转换?
答案 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 );
答案 1 :(得分:0)
这个命令似乎有效,我不再遇到š
的问题(其他特殊字符仍然被转换 - 就像引用一样,很好):
CKEDITOR.config.entities_latin = false;
答案 2 :(得分:0)
仅从 ckeditor.js 源中删除了“scaron”和“Scaron”。