1
SolidZORO OP 你知道我是怎么解决的么?我先用notepad++保存成UTF-8 without BOM,WP主题就正常了,切到UTF-8还是会错位。然后我用windows的记事本打开这个UTF-8 without BOM的php 另存为 UTF-8的php。这样就解决了问题。
所以我是搞不懂了。notepad++出来的UTF-8真的不标准么?难道我还真的撞倒bug了哦? 好诡异的事情阏~ |
2
MiniLight 2011-03-21 05:43:14 +08:00
BOM 标记会带来很多未知问题 大名鼎鼎的“锟斤拷”就出自于此 是不被推荐使用的 这段代码放在服务器上可以帮助你去除PHP文件中隐藏的 BOM 标记
<?php //remove the utf-8 boms //by magicbug at gmail dot com if (isset($_GET['dir'])){ //config the basedir $basedir=$_GET['dir']; }else{ $basedir = '.'; } $auto = 1; checkdir($basedir); function checkdir($basedir){ if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..'){ if (!is_dir($basedir."/".$file)) { echo "filename: $basedir/ $file ".checkBOM("$basedir/$file")." <br>"; }else{ $dirname = $basedir."/". $file; checkdir($dirname); } } } closedir($dh); } } function checkBOM ($filename) { global $auto; $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { if ($auto == 1) { $rest = substr($contents, 3); rewrite ($filename, $rest); return ("<font color=red>BOM found, automatically removed.</font>"); } else { return ("<font color=red>BOM found. </font>"); } } else return ("BOM Not Found."); } function rewrite ($filename, $data) { $filenum = fopen($filename, "w"); flock($filenum, LOCK_EX); fwrite($filenum, $data); fclose($filenum); } ?> |
3
est 2011-03-21 08:54:31 +08:00
呃其实 锟斤拷 和bom无关,只是unicode站位符
|
4
no2x 2011-03-21 10:19:14 +08:00
估计是有其他文件带了 BOM 吧,否则不会这样。
我倒是试过其他文件没带 BOM 的时候,一个模板带了 BOM 导致顶头多了行空白。 |
5
SolidZORO OP |
6
freefcw 2011-03-21 13:53:33 +08:00
BOM这个东西的问题确实是很多的,文件还是不要比较好,特别是写网页脚本
|