我需要在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
});
似乎没什么用。还有什么我可以做的让特殊角色按照我的意图工作吗?
答案 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
});