Ajax JSON响应中的特殊字符编码

Ajax JSON响应中的特殊字符编码,ajax,json,utf-8,Ajax,Json,Utf 8,我需要在json响应中使用西班牙语文本。我已经尝试了所有可能的方法,但是消息仍然在UI上显示奇怪的字符。我要传达的信息是 Número de Seguro Social 但它显示为 N�mero de Seguro Social 在爪哇方面, //response.setContentType("application/json"); //response.setCharacterEncoding("UTF-8"); response.setContentType("a

我需要在json响应中使用西班牙语文本。我已经尝试了所有可能的方法,但是消息仍然在UI上显示奇怪的字符。我要传达的信息是

   Número de Seguro Social
但它显示为

    N�mero de Seguro Social 
在爪哇方面,

 //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 http-equiv="content-type" content="text/html;charset=utf-8">

似乎什么都不管用。我还能做些什么来让这些特殊角色按照我的意图工作吗

我将通过发送字符串来测试错误首先发生的位置:

 "N\u00famero de Seguro Social"
到显示UTF字符串的浏览器,只是为了确保它能够理解和显示您试图显示的UTF字符串

但实际问题可能在于:

out.write(jsonResponse.toString().getBytes());
As getBytes将获取系统默认字符集的字节,该字符集可能不是UTF-8。您可以通过调用
Charset.defaultCharset()来检查这一点


我猜
jsonResponse
是您自己的类,用于存储响应数据,然后在最后将其转换为JSON。我建议使用类似的库来进行JSON转换,因为有很多像这样的小问题可以解决,只要你使用一个像样的库来进行编码/解码。

谢谢@Danack。。。将字符集传递给getBytes()就成功了
jsonResponse.toString().getBytes(Charset.forName(“UTF-8”)
@rrkwells您真的不想用Java手工编码JSON。
$.ajax({
type: "Get",
url: your url,
data: { inputParam : JSON.stringify(inputParam)},
    dataType: "json",
    success: //callbackfn,
    error: //error
});
$.ajax({
type: "Get",
url: your url,
data: { inputParam : JSON.stringify(inputParam)},
    dataType: "json",
    success: //callbackfn,
    error: //error
});