Ajax JSON响应中的特殊字符编码
我需要在json响应中使用西班牙语文本。我已经尝试了所有可能的方法,但是消息仍然在UI上显示奇怪的字符。我要传达的信息是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
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
});