相信很多人用PHP版的ckeditor是不是经常会遇到空格 全变成问号的情况(如图)。
录入进去的是 ,utf-8编码,但用ckeditor读入内容时,在编辑器里显示的却是个黑点问号,切换到源码,竟是一个小方框,这问题啊,真是折腾死人了。。。
我们总归咎于ckeditor的原因,更新了ckeditor还是一样。
其实还是编码的原因,解决方法如下——
方法1:修改ckeditor/config.js
所有的情况都出现在有空格 的地方,而ckeditor对于空行是自动添加段落标记"<p></p>"的,而如果这一行里没有内容的话,又自动在里面添加” “,所以可以控制ckeditor不让它自动添加“nbsp”,在config.js里加上语句“config.fillEmptyBlocks=false;”(如图)。
另外也有可以控制ckeditor让它不自动添加段落标记的,这个自己百度研究。
(本方法不是最佳之选,毕竟编辑时还是需要用到空格键来修饰段落的。)
方法2:
传递给ckeditor的这个$content要先替换一下内容,把“&”转为"&",即:str_replace(" ","&nbsp;",$content);”这样也可以让ckeditor正常显示,也可以随意录入空格符。
方法3:从根源上解决
之所以在切换到源码时看到一个个小方框,原因是转换时编码不对。
我们平时都把内容先用html_entity_decode转一下再传给ckeditor,一般会这样写“html_entity_decode($content)”,html_entity_decode默认编码是ISO-8859-1,而我们数据库存的数码的编码通常是utf8(至少也不会用到ISO-8859-1这种编码),所以我们在转换时要把html_entity_decode写完整:html_entity_decode($content,ENT_COMPAT,"UTF-8"),中间的ENT_COMPAT也是html_entity_decode默认值,因为要写第三个参数,所以第二个参数也必须带上,详细自己查看html_entity_decode的详细说明。
希望能帮助到遇到同样问题的亲们,感激就赞一个吧!