Content is not allowed in prolog异常产生原因及处理方式
2016-01-29 09:08
471 查看
web项目在启动的时候报Content is not allowed in prolog错误,后经检查发现是web项目在使用dom4j/sax 读取一个xml文件时报错。
原因如下:
BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记,在UTF-16里本来是FF FE,变成UTF-8就成了EF BB BF。这个标记是可选的,因为UTF8字节没有顺序,所以它可以被用来检测一个字节流是否是UTF-8编码的。微软做这种检测,但有些软件不做这种检测,而把它当作正常字符处理。
微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节, windows上面的notepad等程序就是根据这三个字节来确定一个文本文件是ASCII的还是UTF-8的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8文本文件做个这样的标记。
由于windows平台把utf-8 格式的文件在前边加了 EF BB BF三个字节 ,而dom4j 不认这些!所以可以使用ue或Notepad++打开xml 文件,另存为"utf-8 无bom" 替换项目中的文件,重新编译一下问题解决。
原因如下:
BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记,在UTF-16里本来是FF FE,变成UTF-8就成了EF BB BF。这个标记是可选的,因为UTF8字节没有顺序,所以它可以被用来检测一个字节流是否是UTF-8编码的。微软做这种检测,但有些软件不做这种检测,而把它当作正常字符处理。
微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节, windows上面的notepad等程序就是根据这三个字节来确定一个文本文件是ASCII的还是UTF-8的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8文本文件做个这样的标记。
由于windows平台把utf-8 格式的文件在前边加了 EF BB BF三个字节 ,而dom4j 不认这些!所以可以使用ue或Notepad++打开xml 文件,另存为"utf-8 无bom" 替换项目中的文件,重新编译一下问题解决。
相关文章推荐
- 工作笔记 7.21-7.25
- 配置免安装版JAVA1.7的环境变量
- transform 各种影响
- .htaccess中的apache rewrite规则写法详解
- 0005-这个写的不错,这在做关于这个功能的项目
- 【数据结构与算法】【排序算法】排序算法总结
- 【数据结构与算法】【排序算法】排序算法总结
- 【数据结构与算法】【排序算法】排序算法总结
- 【数据结构与算法】【排序算法】排序算法总结
- 【数据结构与算法】【排序算法】排序算法总结
- 【数据结构与算法】【排序算法】排序算法总结
- 【数据结构与算法】【排序算法】排序算法总结
- 【数据结构与算法】【排序算法】排序算法总结
- Java socket 学习
- P2P协议学习
- 微信转发相关脚本
- PL/SQL 9 注册码
- mySql与Oracle的区别
- Linux 软件源设置
- 伪元素生成空格与中文字符对齐布局