2

我需要在 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();

在 head 部分添加了元标记。

  <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
  });

似乎没有任何工作。我还能做些什么来让特殊字符按我的意图工作吗?

4

2 回答 2

3

我会通过发送字符串来测试错误首先发生在哪里:

 "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 库来进行 JSON 转换,因为有很多像这个一样的小问题,只要你使用一个不错的库来进行编码/解码。

于 2013-03-16T02:36:24.433 回答
0
$.ajax({
type: "Get",
url: your url,
data: { inputParam : JSON.stringify(inputParam)},
    dataType: "json",
    success: //callbackfn,
    error: //error
});
于 2013-03-16T07:28:28.373 回答