2011-08-19 110 views
0

我有一个XML处理程序以下列方式使用:黑莓UTF-8问题

SAXParserFactory.newInstance().newSAXParser().parse(new ByteArrayInputStream(response.getBytes()), myXMLHandler); 

我的目标平台是4.5 JRE,以覆盖广大的市场。出于某种原因,此解析器可以在4.5版本上运行,但不适用于任何更高版本的操作系统。我收到解析器生成的格式错误的UTF-8异常。

任何想法会导致不同的行为?是否有与黑莓JRE的后续版本不兼容的字符?

回答

1

当你有response.getBytes()时,最有可能你的xml使用UTF-8。 String.getBytes()返回默认操作系统编码的字节,即BB上的ISO-8859-1。所以请尝试通过调用response.getBytes("UTF-8")来获得UTF-8字节。

我认为这与操作系统版本无关,而是与响应中的实际内容相关。如果响应仅包含ASCII数据,那么您的代码仍然会通过OK(因为这些ASCII字符在UTF-8表中具有相同的位置)。但是如果响应有一些字符超出ASCII,那么解析器可能会失败。