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

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 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题