2013-03-15 50 views
1

我需要在json響應中使用西班牙文本。我嘗試了所有可能的方法,但消息仍然在UI上顯示怪異字符。我想顯示的信息是,在JSON響應中編碼的特殊字符

Número de Seguro Social 

但它顯示爲,

N�mero de Seguro Social 

在Java方面,

//response.setContentType("application/json"); 
//response.setCharacterEncoding("UTF-8"); 
response.setContentType("application/json;charset=utf-8"); 
OutputStream out = null; 
out = response.getOutputStream(); 
out.write(jsonResponse.toString().getBytes()); 
out.close(); 

頭部分加入meta標籤。

<meta http-equiv="content-type" content="text/html;charset=utf-8"> 

我還設置內容類型在Ajax調用

$.ajax({ 
     async: false, 
     cache: false, 
     type: get, 
     contentType: "application/json; charset=utf-8", 
     url: //url, 
     data: //data, 
     dataType: //dataType, 
     success: //callbackfn, 
     error: //errorfn 
    }); 

沒有什麼似乎工作。還有什麼我可以做,讓特殊字符按我的意圖工作?

回答

2

我會測試,其中錯誤是第一次出現通過發送字符串:

"N\u00famero de Seguro Social" 

爲了顯示這條UTF串瀏覽器,只是爲了確保它能夠理解和顯示UTF串你正在嘗試顯示。

但實際的問題可能是:

out.write(jsonResponse.toString().getBytes()); 

如的getBytes將獲得的系統,這可能不是UTF-8的默認字符集的字節數。您可以通過致電Charset.defaultCharset();

來檢查此問題jsonResponse是您自己的類,用於存儲響應數據,然後在最後將其轉換爲JSON。我建議使用http://www.json.org/的庫(如Google JSON library)進行JSON轉換,因爲像這樣的很多小問題都可以解決問題,只要您使用體面的庫進行編碼/解碼即可。

+0

感謝@Danack ......路過的字符集到的getBytes()的伎倆.. 'jsonResponse.toString()的getBytes(Charset.forName( 「UTF-8」)' – RKodakandla 2013-03-18 14:24:53

+0

@rrkwells你真的不想在Java中手動編碼JSON。 – Danack 2013-03-18 23:56:07

0
$.ajax({ 
type: "Get", 
url: your url, 
data: { inputParam : JSON.stringify(inputParam)}, 
    dataType: "json", 
    success: //callbackfn, 
    error: //error 
});