看一下这张图片
链接中的源代码是混乱的。此外,将文件另存为html会在doctype上方生成一些奇怪的字符,如此处所示
php标头源代码以下列方式开始:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
....
此外,头文件使用
包含在另一个文件的顶部 <?php include ('includes/public_header.php'); ?>
...这也是文件中的第一行。所以,我的问题是,为什么在doctype之前会出现流浪字符,以及在哪些方面可以解决这个问题?
更多信息:此网站(downtowngreensboro.net)正在使用CodeIgniter,标头和其他文档采用UTF-8编码。
经过进一步探索,似乎此问题仅限于CodeIgniter。博客部分(Wordpress)显示了干净的源代码。
答案 0 :(得分:0)
“奇怪的字符”似乎是空字节:将源代码传递给hd
,我看到了:
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3c |...............<|
000000f0 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 20 50 55 |!DOCTYPE html PU|
00000100 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 54 |BLIC "-//W3C//DT|
00000110 44 20 58 48 54 4d 4c 20 31 2e 30 20 54 72 61 6e |D XHTML 1.0 Tran|
00000120 73 69 74 69 6f 6e 61 6c 2f 2f 45 4e 22 20 22 68 |sitional//EN" "h|
在<!DOCTYPE
标记之前总共有239个空字节。 (hexdump省略了其中一些,标有*
。)我不知道它们来自哪里 - 你应该在十六进制编辑器中查看你的PHP源文件,看看它们是否是那里。
答案 1 :(得分:0)
事实证明CodeIgniter中的一个自动加载的帮助文件导致了这个问题。在文件的末尾是一个关闭的php标记,CodeIgniter警告它。删除它完全解决了问题。