phpcms是从线上一台linux机器下载下来的.
编码是gbk版本的.
下载时候,不懂是否上传人使用ftp有问题,还是直接使用tar解压还是怎么回事,下载下来的text全部变成cr换行符形式,而不是window的换行符.导致无法运行.在window下面通过部分转换成window换行符后.能运行.
但是测试发现编辑内容时,中文总是无法显示出来,挨过滤掉.
跟踪到最后,发现是在htmlspecialchars进行html过虑时出现丢失了.
以为是数据库传过来的数据是utf8导致,测试发现竟然不是.
奇怪了.
于是拿一个简单的php测试同样存在这样情况.
测试代码
<?php
header('Content-type: text/html; charset=gb2312');
echo '<pre>';
$s = "kkkk顺顺因在国";
echo mb_detect_encoding($s);
var_dump(htmlspecialchars($s,null) );
var_dump(htmlspecialchars($s,null,'936') );
?>
</pre>
---------
看来是误判了.关于编码问题总是比较麻烦.