org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence

org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence。解析xml,出现该异常。

 

 

 

 

SAXBuilder builder = new SAXBuilder(); Document doc = builder.build(new File(responseXmlPath)); Element foo = doc.getRootElement();

 

 

 

 
 

 

 

在生成Document 对象时,Eclipse编译文件的编码或者文件所在地的编码和该文件需要的编码不一致,会产生该异常。 解决办法:在生成该文件或者向文件中写入文件时,指定为所需编码。如: 

 

BufferedWriter bw = null; try { bw = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(new File(responseXmlPath)), "UTF-8")); bw.write(resultStr); bw.flush(); } catch (UnsupportedEncodingException e) { logger.error("when create OutputStreamWriter, encoding error", e); } catch (IOException e) { logger.error("when write resultStr to responseXml error:", e); } finally { if (bw != null) try { bw.close(); } catch (IOException e) { logger.error( "when finally close the BufferedWriter error:", e); } }

 

 

 

 
 

 

 

 

最好在获取Documen的时候,也用指定编码的IO获取。

Document doc = builder.build(new InputStreamReader( new FileInputStream(new File(responseXmlPath)), "UTF-8"));

但是生成文件时,必须指定为所需编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值