非法字符的原因,编码问题

在freemarker 模板使用<#include "/WEB-INF/template/wap/top.ftl"> 指令后,发现页面空出一行,但是检查文件没有换行,在火狐上查看多出了 &#65279;

    是由于文件在保存的时候在前面加入了bom字符.

 UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。

Windows就是使用BOM来标记文本文件的编码方式的。

目前已经有很多的新版本软件已经支持BOM,但仍然有不少软件还不支持BOM。

由此可见在标准化来临的时候一个好的文本编辑器也是 比较重要的,editplus由于不支持BOM的选择而显的不足。而像EmEditor、UE(UltraEdite-32)等软件就显得比 Editplus优秀。还有就是我们做网页用的比较多的Dreamweaver,在MX及以前版本就没有BOM选项,新版的才提供这个。所以不少朋友也曾 经为此事烦恼过。如今除了Web应用还涉及到了桌面软件和Web互通的问题。下面是EmEditor的BOM选项

既然知道了原因:直接notopad++ 保存为无dom格式 (格式-》转为UTF-8 无dom格式) 完美解决

CSS样式在IE6下无效、编码问题、中文注释问题

<link href=”css.css” rel=”stylesheet” type=”text/css” />
通过link方式引用css,在ie7、8、9等其他主流浏览器可以正常显示,ie6不能正常显示。

解决方法:
1、改变文件编码格式为utf-8,并在css文件加上 @charset “utf-8”;
2、去掉css中的中文注释。

原因:

网页采用了 UTF-8 编码格式,这本来没有问题,问题是外部 CSS 文件默认是 ANSI 编码,并没有保存为 UTF-8 格式。可能你会发现在一般情况下这样也是没有问题的,然而当 CSS 文件中包含有中文注释时就可能不尽如人意了!我估计是 IE6 版本以下的浏览器在解析这个 CSS 文件时因为编码问题而无法正确解析,所以才会发生 CSS 在 IE6 下不起作用的情况。看来微软已注意到这个问题,在 IE7 中把它修复了。

但是用 IE6 的人还是不少。因此这个问题需要解决:
方法一:把 CSS、JS 和网页文件都统一保存为 UTF-8 格式。
方法二:去掉 CSS、JS 中的中文注释,或者改为英文。