我已經被這個問題困擾了好幾個星期了。我有一個從Autonomy IDOL搜索中收到的XML文檔,並且可以將它成功解組爲一組Java對象。但是,如果有國際字符(例如中文,日文,俄文/西里爾文),它們會轉換爲問號(?)。JAXB國際字符解組導致問號(?)
XML文檔的第一行將編碼設置爲UTF-8:<?xml version =「1.0」encoding =「UTF-8」standalone =「yes」? >
我使用下面的代碼爲解組操作:
public static AutnResponse convertXmlToResponse(String xml) {
AutnResponse resp = null;
try {
JAXBContext jc = JAXBContext.newInstance(AutnResponse.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
resp = (AutnResponse) unmarshaller.unmarshal(new InputStreamReader(new ByteArrayInputStream(xml.getBytes()),"UTF-8"));
} catch(Exception ex) {
System.out.println("Caught exception trying to unmarshal XML file: " + ex.getMessage());
ex.printStackTrace(System.out);
}
return resp;
}
是否有我忽視的東西?任何幫助,提示或其他資源將非常感激。我搜索了無數的Google列表,但無法解決這個問題。
感謝您的提示。我嘗試了兩種方法,但仍然收到問號。 – ctg2366
@ ctg2366 - 你在哪裏看到問號?我看到JAXB正確處理字符的情況,但人員編輯無法正常工作,即使實際文檔正確時,他們也會在查看文檔時看到問號。 –
@BlaiseDoughan謝謝你的回覆。你的評論讓我想到了這一點。我在Eclipse中運行它,並在控制檯以及發送數據的JSP頁面上看到問號。不過,我將Eclipse中的默認字符集更改爲UTF-8,並在解組後輸出數據,現在我正確地看到了國際字符。但是,在由JSP呈現之後,它們仍然在瀏覽器中顯示爲問號。我現在將查看JSP代碼。 – ctg2366