今天遇到了一件非常奇怪的事情,很久不写程序了,以前只是些ASP,都是用的是IIS,所以使用include都没出现过问题,今天在公司些页面居然出现了怪异现象【至于现在遇到的问题是不是因为执行环境不同而产生的我也不清楚,因为我不知道我们的服务器具体用的什么环境,呵呵,还请大家自己测试】;
写完的页面头部和尾部要使用共用的,所以必须用include引入,恰恰头和尾的文件是我新写的。使用的是EmEditor编辑器,写完保存,上传服务器引用。
此时,怪异现象出现,页面上多出一段高度,很奇怪,其实是一个空行,奇怪的是引用include的地方都会出现一个空行。经过仔细盘查源码,执行过的页面源码中在include开始之前出现了一个空行『其实这并不只是一个空行,里面有一个看不见且不占宽度的字符,用键盘左右键就可以看得到,复制下来放在别的地方还不灵,只有在firebug中能看见』,并且此空行在浏览器执行后的源码中看不见,但是在firebug中却看得清清楚楚。当时很是郁闷,想不明白为什么会有的东西,经过测试,把引用页面中的所有JS、CSS、注释,可能出现错误的地方全都清除掉了,这个空行还是存在,真是郁闷!问了几个同事,没人遇到过。
解决办法:
经过在网上搜索相关资料,此类情况少之又少,开始怀疑我自己的失误了,是不是我哪里操作不当造成的?突然间看见一个标题“编码为 UTF-8 的JSP 文件中出现非法字符 ” 的标题深深的吸引了我,我就是的问题啊。 的字符到底是什么东西我现在也搞不清楚,但是我知道是他造成的的空行。
怪异字符的产生:
由于我使用的是EmEditor编译器,并且我的文件都是从gb2312转换成UTF-8的,在转换时下面有这么一个选项“添加 Unicode 签名(BOM)(G)”默认情况下是灰色,自己选中的。就是因为他,编译器自己会默认给文件中写入这么一个字符。去掉后就不会有空行了。
如何去掉:
将你已经编辑好的UTF-8文件选择另存为,覆盖原来的文件,在保存时“添加 Unicode 签名(BOM)(G)” 的选项是可选的,将前面的勾去掉,保存。大功告成。空行彻底消失。[长叹一口气,原来世界还是如此美好!]
注: 以上问题可能在不同服务器环境下执行不同,我个人条件不足,无法测试。
对该问题有不同看法的请在评论中提出,共同探讨。
Tags: 空白行
用UE编辑器新建文档,把代码拷贝到新建的文档,文件另存为UTF-8无BOM格式就OK了
跨境电商
编码为UTF-8页面中使用include后出现一个空白行的解决办法 « 付琦 博客