xml中文注释解析出错有关问题
xml中文注释解析出错问题
最近在把JDK升级到1.6时碰到一个奇怪的问题。
在jdk1.6版本中,ibatis解析数据库映射文件时,如果文件的注释中出现基数个汉字,且和注释结束符间没有空格分开时,如<!-- 强-->,就会出现解析异常,异常信息如下:
org.xml.sax.SAXParseException: The string "--" is not permitted within comments.
解决方法:1.在注释结束符号前添加空格,如<!-- 强 -->。
注释中中文的编码问题,UTF-8编码的映射文件中的注释,如<!-- 强-->被当作GBK编码解析时,会变成<!-- 寮?->,从而破坏了整个文件的结构。
在UTF-8编码下,中文字用3个字节数表示,而在GBK编码下一个中文字用两个字节表示。
<!-- 强-->的UTF-8的字节编码为:3c 21 2d 2d 20 e5 bc ba
2d 2d 3e
用GBK解析时,e5 bc当作一个汉字解析,而ba 2d也被作为一个汉字解析了,
结果如下:<!-- 寮?->
注释中如果是偶数个汉字时,UTF-8下的字节数也为偶数个,用GBK解析时就不会多出一个字节。
问题:为什么jdk1.5就不会出错,只在jdk1.6时出错?
1 楼
qinghua0208
2009-02-17
顶楼主,期待楼主的问题被解决