ckeditor空格nbsp全变问号的解决方法

时间:2024-03-18 15:02:16

 

 相信很多人用PHP版的ckeditor是不是经常会遇到空格 全变成问号的情况(如图)。

ckeditor空格nbsp全变问号的解决方法

 

录入进去的是   ,utf-8编码,但用ckeditor读入内容时,在编辑器里显示的却是个黑点问号,切换到源码,竟是一个小方框,这问题啊,真是折腾死人了。。。

ckeditor空格nbsp全变问号的解决方法

 

我们总归咎于ckeditor的原因,更新了ckeditor还是一样。

其实还是编码的原因,解决方法如下——

 

 

方法1:修改ckeditor/config.js

所有的情况都出现在有空格&nbsp;的地方,而ckeditor对于空行是自动添加段落标记"<p></p>"的,而如果这一行里没有内容的话,又自动在里面添加”&nbsp;“,所以可以控制ckeditor不让它自动添加“nbsp”,在config.js里加上语句“config.fillEmptyBlocks=false;”(如图)。

ckeditor空格nbsp全变问号的解决方法

另外也有可以控制ckeditor让它不自动添加段落标记的,这个自己百度研究。

(本方法不是最佳之选,毕竟编辑时还是需要用到空格键来修饰段落的。)

 

方法2:

传递给ckeditor的这个$content要先替换一下内容,把“&”转为"&amp;",即:str_replace("&nbsp;","&amp;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的详细说明。

 

希望能帮助到遇到同样问题的亲们,感激就赞一个吧!