JSON响应中的特殊字符编码

时间:2013-03-15 20:08:17

标签: ajax json utf-8

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

   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 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 个答案:

答案 0 :(得分: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转换,因为有很多像这样的小问题,只要你使用了一个像样的库就解决了问题进行编码/解码。

答案 1 :(得分:0)

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