Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (ut
2014-11-19 14:01
411 查看
报这个错的原因千奇百怪,找了好长时间,发现文件的编码不是简单的UTF-8,而是byte order mark utf-8(bom),这个跟utf-8有些区别,具体如下
因为Unicode可以采用16位或者32位编码,所以计算机在处理时需要知道其字节顺序,BOM就是用来标识字节流的字节顺序的,但字节顺序这个概念对UTF-8来说是没有意义的,所以BOM对UTF-8同样没有意义。但Unicode标准却BOM在UTF-8编码格式中存在。其存在位置在文件开头,以三个字节0xEF, 0xBB, 0xBF表示。
UTF-8编码不推荐使用无意义的BOM,但许多Windows程序却在保存UTF-8编码的文件时将其存为带BOM的格式(即在文件开头加上0xEFBBBF三个字节),这么干的就包括Windows记事本。
因此,在编辑UTF-8的文件时,建议不要使用记事本等进行编辑,虽然保存后的文件仍然是UTF-8,但却已经不再是保存前的UTF-8了,这在使用这些文件的时候可能就会因为编码而出现问题,就像我文章开头所描述的那样。
去掉UTF-8编码文件BOM的方法:用Notepad++的Encoding菜单中的Encoding in UTF-8 without BOM即可。或者用任何16进制编辑器将文件前三个字节去掉。再或者更简单的:用VIM设置UTF-8编码的BOM标记。
因为Unicode可以采用16位或者32位编码,所以计算机在处理时需要知道其字节顺序,BOM就是用来标识字节流的字节顺序的,但字节顺序这个概念对UTF-8来说是没有意义的,所以BOM对UTF-8同样没有意义。但Unicode标准却BOM在UTF-8编码格式中存在。其存在位置在文件开头,以三个字节0xEF, 0xBB, 0xBF表示。
UTF-8编码不推荐使用无意义的BOM,但许多Windows程序却在保存UTF-8编码的文件时将其存为带BOM的格式(即在文件开头加上0xEFBBBF三个字节),这么干的就包括Windows记事本。
因此,在编辑UTF-8的文件时,建议不要使用记事本等进行编辑,虽然保存后的文件仍然是UTF-8,但却已经不再是保存前的UTF-8了,这在使用这些文件的时候可能就会因为编码而出现问题,就像我文章开头所描述的那样。
去掉UTF-8编码文件BOM的方法:用Notepad++的Encoding菜单中的Encoding in UTF-8 without BOM即可。或者用任何16进制编辑器将文件前三个字节去掉。再或者更简单的:用VIM设置UTF-8编码的BOM标记。
相关文章推荐
- Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (ut
- Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (ut
- Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive(utf
- JSP Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive
- Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (utf-8)
- Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (utf-8)
- Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (utf-8)
- Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (utf-8)
- Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (utf-8)
- Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (utf-8)
- 界面编码报错:Page-encoding specified in XML prolog (UTF-8) is different from that specified in
- jsp学习笔记之Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive(utf-8)
- 【XML prolog (UTF-8) is different from that specified in page directive (utf-8)】tomcat版本问题
- (line: 1, column: 2) Page-encoding specified in XML prolog (UTF-8) is different from that specified
- Page-encoding specified in XML prolog (UTF-8) is different ...页面编码错误
- (UTF-8) is different from that specified in page directive(utf-8)
- UE编辑的XML,如果字符集为“UTF-8”,Content is not allowed in prolog异常问题
- org.apache.jasper.JasperException: /app/jsonp.jsp(1,2) Page-encoding specified in jsp-property-grou
- Navigating Away from a Page that has Changes, in ASP.NET
- android studio学习----The project encoding (windows-1252) does not match the encoding specified in the Gradle build files (UTF-8)