Tag: BOM预览模式: 普通 | 列表
09-11
11

php头部空行|utf8头部空行|关于bom以及utf-8的问题

BOM(Byte order Mark)是Unicode规范中推荐的标记字节顺序的方法。

在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符”ZERO WIDTH NO-BREAK SPACE”。

这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。

UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF(读者可以用我们前面介绍的编码方法验证一下)。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。

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

查看更多...

Tags: BOM UTF8

分类:学习 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 231
08-08
04

编码为 UTF-8 的JSP 文件中出现非法字符  问题

在用 include 包含JSP 文件时发现最终生成的页面上会有多余的空白行,源代码中有个不能显示的字符,在查了一些文章后发现问题出在编辑器上。之前我用 Editplus 2.11 保存 JSP 文件为 UTF-8 编码,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM),它的表示的是 Unicode 标记(BOM)。因此解决办法就是将代码保存的时候将 BOM 前面的勾去掉。可以用 EmEditor , Editplus 2.21 来保存。

 表示 "ZERO WIDTH NO-BREAK SPACE",更详细的请见
http://www.fileformat.info/info/unicode/char/feff/index.htm

发现问题的测试代码:
test.jsp
---------------------
<%@ page pageEncoding="UTF-8" %>

查看更多...

Tags: BOM UTF-8

分类:学习 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 650
08-08
04

Java中对有BOM头的UTF-8文件的处理

在用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark)。JDK1.5之前的Reader都不能处理BOM,解析这种格式的xml文件时,会抛出异常:Content is not allowed in prolog. 据说JDK1.6已经解决了这个bug。(参考http://www.uuzone.com/blog/mao/98921.htm
在未使用JDK1.6之前,解决办法有三:
引用内容 引用内容
1、不要使用有BOM头的xml文件,就是说不要用记事本保存utf-8的xml文件,editplus就很好用;
2、使用这位仁兄的unicodereader,可以正确处理有BOM的xml文件:
http://koti.mbnet.fi/akini/java/unicodereader/
3、如果是用Xerces解析器,直接传Stream给Xerces,而不是传Reader,Xerces就可以正确的处理了。总之不要用Reader就好了。

Tags: BOM UTF-8

分类:学习 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 721