论坛首页 入门技术论坛

xml中文注释解析出错问题

浏览 3720 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-08-15  

最近在把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时出错?

 

   发表时间:2009-02-17  
顶楼主,期待楼主的问题被解决
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics