起因:
在使用SAXParser解析XML文档, 当XML文档中包含中文时出错.
解决方案:
在对XML进行解析之前, 将String形式的XML文档, 都转换成UTF-8格式. 转换代码如下;
public static String toUTF_8(final String str){
if(str==null)
return str;
String retVal = str;
try{
retVal = new String(str.getBytes("ISO8859_1"), "UTF-8");
} catch(Exception e){
//log...
}
return retVal;
}
续:
今天发现问题的根本原因并不如下所述, 而是String转换成产生乱码, 使用的是StringBufferInputStream, 注意:这个类来能进行正确的编码转换, 使用ByteArrayInputStream, 代码如下:
InputStream stream = null;
try{
stream = new ByteArrayInputStream(xml.getBytes("utf-8"));
}catch (Exception e){
}
相关链接: