Gregarius编辑feeds的时候,中文总是乱码(版本r1787),其实解决方法很简单的:
找到admin/channels.php
这个文件,找到第900行,修改为:
//$title = htmlentities($title,ENT_QUOTES);
$title = htmlspecialchars($title, ENT_QUOTES);
这个是feed标题乱码的修正,再向下翻到Description部分,大概在988行左右,修改为:
// Description
//$descr = trim(htmlentities(strip_tags($descr), ENT_QUOTES));
$descr = trim(htmlspecialchars(strip_tags($descr), ENT_QUOTES));
这样就ok了。
原因很简单,htmlentities这个函数在转义到html标记的时候,会吧中文字符中一些字节也进行了转义,形成了乱码,而htmlspecialchars这个函数只转义特定的5个字符,不会存在这种情况。
hack之后,单引号和双引号都能输入了,但是反斜杠\
仍然是不能输入的,应该是在输入处理的时候过滤掉了,或者进行了其他的转换,不过一般也用不到,就不改了。西文环境用户的处理习惯就是和我们不大一样啊。
参考
- [PHP中htmlentities跟htmlspecialchars的区别](http://blog.fesite.com/2007/08/23/php-htmlentities-htmlspecialchars/)
One thought on “Gregarius编辑feed时中文乱码的解决”