php中编码后使用include()函数出现莫名错误
各位帮忙:
php中我做了一个head.php,然后通过<? include("head.php")?> 引用到index.php中,突然发现编码问题,然后用notepad++将编码由insi 转为utf-8,再次刷新就出现问题了,网页中<head>被解析的支离破碎,右键查看源代码没有问题,但是保存下来发现head结束标签莫名其妙的上移了好几行。但是如果不用include则问题解决。
这个问题是编码的问题还是include的限制呢?昨天下午修改discuz!的时候也出现了这样的问题。
以下是代码:(右键查看)
<!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"> <head> <title>社区</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="../my/style.css" /> <link rel="stylesheet" type="text/css" href="main.css" /> </head> <body> <div id=banner>
……………………
下面是另存为-》打开后查看的:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- saved from url=(0034)http://localhost:2000/ly/index.php --> <HTML><HEAD><TITLE>社区</TITLE> <META content="text/html; charset=utf-8" http-equiv=Content-Type> <META name=GENERATOR content="MSHTML 9.00.8112.16441"></HEAD> <BODY> <LINK rel=stylesheet type=text/css href="社区_files/style.css"><LINK rel=stylesheet type=text/css href="社区_files/main.css"> <DIV id=banner>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
php 解析 bom头的时候 他不认识这种 东西 直接当字符发送给浏览器
所以照成你解析的时候出问题
去掉bom 解决问题 你可以结贴了
bom的问题吧 估计是谁用记事本编辑保存过
尝试 用notepad++转换成utf-8 no bom的吧
对,我是选上了bom,utf-8和utf-8 no bom 有什么区别吗?还有,php从代码到浏览器在解释的过程中有那些环节可能有编码转换过程呢?
页面显示有问题,不再居中,同时顶部出现一段空白,从源代码看是html被解释的时候,将head的一部分解释到head中,其他的变成body里面的东西了
没看明白有什么问题,页面显示有问题么
现在是head解析出问题了……跟css有什么关系呢?你的意思是公用css和本页面css相互覆盖影响吗?
这个好像是包含的时候,头部文件里的css这些公共的代码应用到啦主页面。要不你把头部文件的css这些变成不是公共的代码试一试
对,我是选上了bom,utf-8和utf-8 no bom 有什么区别吗?还有,php从代码到浏览器在解释的过程中有那些环节可能有编码转换过程呢?
BOM用于告知编辑器此unicode(准确说是UTF-16,UTF-32)文档的字节序(BE or LE)。但UTF-8其实不需要BOM的(linux下utf-8文档都没有BOM),如果PHP utf-8文档有BOM会导致一些问题:浏览器会把BOM字符当成网页字符来解析,结果就出莫名故障。
至于编码转换,在PHP解析器(php-fpm, mod_php),web解析器(apache, nginx)都可以实现编码转换
保存到UTF-8的时候是不是把BOM选上了?