2011-08-19 130 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,那麼解析器可能會失敗。