小小鱼来喽 2017-03-17 07:44 采纳率: 0%
浏览 2877
已采纳

jsonp返回的数据中的汉字在浏览器中是问号

前端js代码:
$.ajax({
url: "http://176.1.19.64:8081/engine/config/" + treeNode.id + ".do?callback=?",
type: "get",
dataType: "jsonp",
scriptCharset: "UTF-8",
jsonpCallback:"successCallback",
data: null,
async: false,
timeout: $.config.ajax.timeout,
success: function (json) {

var reportConfig = JSON.parse(json.reportConfig);
console.log(reportConfig);
$.databrowser.addTab(reportConfig);
}
});
服务端代码:
@RequestMapping(value = WebUrls.URL_CONFIG)
public
@ResponseBody
String getReportConfig(@PathVariable String nodeId, HttpServletRequest request, HttpServletResponse response) {
DynamicRequestParams params = new DynamicRequestParams(request);
String result = "";
try {
result = JsonUtil.objectToJsonStr(engineService.getReportConfig(nodeId));
} catch (MapperException e) {
logger.info(e.getMessage());
e.printStackTrace();
}
try {
String callback = params.get("callback").toString();
JSONObject jsonObject = new JSONObject();
jsonObject.put("reportConfig",result);
result = callback + "(" + jsonObject.toString() + ")";
} catch (Exception e) {
logger.info(e.getMessage());
e.printStackTrace();
}
logger.info("success");
try {
result = new String (result.getBytes("utf-8"),"utf-8");
} catch (UnsupportedEncodingException e) {
logger.error(e.getMessage(),e);
e.printStackTrace();
}
logger.info(result);
try {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
logger.error(e.getMessage(),e);
e.printStackTrace();
}
//response.setContentType("text/plain;charset=ISO-8859-1");

    return result;
}

chrome调试显示的网络信息:
General
Request URL:http://176.1.1.167:8080/engine/config/30000102.do? callback=successCallback&_=1489735733373
Request Method:GET
Status Code:200
Remote Address:176.1.1.167:8080
Response Headers
view source
Content-Length:58893
Content-Type:text/plain;charset=ISO-8859-1
Date:Fri, 17 Mar 2017 07:29:00 GMT
Request Headers
view source
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Host:176.1.1.167:8080
Pragma:no-cache
Referer:http://176.1.19.64:8081/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Query String Parameters
view source
view URL encoded
callback:successCallback
_:1489735733373

返回的数据片段:
successCallback({"reportConfig":"{\"columnMaxNum\":3,\"id\":\"30000102\",\"rowMaxNum\":3,\"showBlock\":false,\"title\":\"????????\",

现在就是这个问号,不知道怎么处理。查了好多方法,不成功。
  • 写回答

2条回答 默认 最新

  • 小小鱼来喽 2017-03-17 15:54
    关注

    问题解决了,采用的

    response.getWriter.print(text);

    response.getWriter.close();

    这两句即可,不需要在Tomcat中设置,Tomcat中的设置应该只是针对传到后台的数据的编码的,http的response还是需要自己指定的。

    今天看了一天这个问题,终于解决了,十分开心。

    明天可以好好玩了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型