在我的應用程序檢索稱爲谷歌搜索設備(GSA)的外部工具JSON格式的搜索結果。來自GSAJava的JSON文本編碼問題
JSON結果是非常大的,因此,我希望修改GSA JSON結果爲更適合顯示在我的網頁。
如果我沒有直接在我的Java代碼格式化我不會在我的網頁遇到任何編碼問題顯示GSA JSON結果。
但是,如果我大GSA JSON結果格式化爲我所面對的問題編碼在我的servlet的Java代碼合適的JSON格式。示例 - 「All Access Pass」
顯示爲ÂAll Access PassÂ
。
我從我的servlet返回修改後的JSON的網頁使用下面的代碼 -
response.setContentType("application/json;charset=UTF-8");
我試圖改變字符集來iso-8859-1
但它並沒有任何區別。
編輯我原來的JSON以下方式 -
String responseText = getMethod.getResponseBodyAsString();
JSONObject resultJSON = new JSONObject();
try {
JSONObject jsonObj = new JSONObject(responseText);
JSONArray resultJsonArray = jsonObj
.getJSONArray("RES");
JSONObject searchResultJSON = null;
for (int iCnt = 0; iCnt < resultJsonArray.length(); iCnt++) {
searchResultJSON = new JSONObject();
JSONObject obj = resultJsonArray.getJSONObject(iCnt);
JSONObject metaTagObj = obj
.getJSONObject("MT");
if (metaTagObj.has(("title"))) {
searchResultJSON.put("title",metaTagObj.get("title").toString());
}
resultJSON.accumulate("RES", searchResultJSON);
}
response.setContentType("application/json;charset=UTF-8");
response.getWriter().print(resultJSON);
}catch(JSONException e){}
修改到我要在這裏可以用JavaScript來完成這將解決我的問題,原來的JSON但它是我做的不想做。
- 有沒有辦法找出原GSA JSON文本的編碼格式?
- 我怎樣才能避免在原有GSA JSON更改文本編碼的java代碼?
請幫我理解這裏發生了什麼,以及如何避免這個問題。
我很好奇原來的JSON格式如何相同的字符。什麼是您轉換它的「合適的JSON格式」?你如何轉換它? – jahroy 2013-03-20 06:18:28
我的代碼唯一的區別是,當我顯示原始JSON時,我將響應內容類型設置爲(「application/json」)。但是如果我用修改過的JSON做同樣的事情,我會變得「??」字符,所以我將它設置爲「application/json; charset = UTF-8」。 – 2013-03-20 06:34:54
這些引號通常來自微軟的應用程序...所以我google了一下,發現[this](http://forum.springsource.org/showthread.php?72944-How-to-handle-Smart-Quotes-pasted- into-TextArea-input),這讓我想知道你是否需要閱讀「_Microsoft的Windows-1252字符編碼_」。或者,也許我的路要走...... – jahroy 2013-03-20 06:41:34