如何使用JavaScript更改从Java servlet传入的字符集?

时间:2016-04-12 21:18:14

标签: javascript java ajax servlets character-encoding

我在http://localhost.com.br:8080/servlet/apps.ctr.HTMLCtr?p1=getCtr有这个servlet。它顺便返回一个JSON。

当我尝试通过JavaScript / jQuery获取数据时,ãç个字符会变成黑色菱形,中间有一个问号:

我认为我的服务器端存在错误配置,但如果我尝试使用Chrome浏览器访问它,我会收到数据,例如:

"Liberação de Registro",
"Mar 28, 2016"

我认为这与客户端编码有关,所以我尝试了http://api.jquery.com/jQuery.ajax/#toptions提供的选项:

var s = 'http://localhost.com.br:8080/servlet/apps.ctr.HTMLCtr?';
$.ajaxSetup({
    scriptCharset: "utf-8",
    contentType: "application/json;charset=utf-8"
});

$.getJSON(s,function(result){
    console.log(result);
});

我尝试将charset更改为ISO-8859-1甚至ISO-8859-15并在Chrome控制台上运行上述代码,但没有任何改变。

我在这里缺少什么?

编辑:这不是How to set encoding in .getJSON JQuery的重复,因为该问题与向servlet发送信息有关,我的问题是从servlet获取信息。此外,关于使用$.ajaxSetup的问题提供的解决方案并没有解决我的问题。

EDIT2:Chrome的响应标题:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Pragma: no-cache
Cache-Control: max-stale=0
Expires: Wed, 31 Dec 1969 23:59:59 GMT
Content-Length: 224
Date: Thu, 14 Apr 2016 16:58:26 GMT

同时发布HTML(我不包括<body>部分):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="br.com.project1.usuario.Usuario"%>
<html>
  <head>
    <title>CbrCpt</title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <link rel="stylesheet" href="/js/jquery-ui-1.11.1.custom/jquery-ui.css" />
    <link rel="stylesheet" href="/css/dataTables.jqueryui.css" />
    <link rel="stylesheet" href="css/bootstrap.css" />
    <link rel="stylesheet" href="css/default.css" />
    <link rel="stylesheet" href="/js/bootstrap-datepicker-1.5.0/css/bootstrap-datepicker3.min.css" />
    <link rel="stylesheet" href="css/jquery.dataTables.min.css" />
    <link rel="stylesheet" href="css/responsive.dataTables.min.css" />
  </head>
  <body>
  </body>
  <script type='text/javascript' src='/js/jquery/jquery-1.10.2.min.js'></script>
  <script type='text/javascript' src='js/bootstrap.min.js'></script>
  <script type='text/javascript' src='/js/jquery-ui-1.11.1.custom/jquery-ui.js'></script>
  <script type='text/javascript' src='/js/accounting.min.js'></script>
  <script type='text/javascript' src='/js/jquery.jqdock.min.js'></script>  
  <script type='text/javascript' src='js/datepicker-pt-BR.js'></script>
  <script type='text/javascript' src='js/moment-with-locales.js'></script>
  <script type='text/javascript' src='js/jquery.dataTables.min.js'></script>
  <script type='text/javascript' src='js/dataTables.responsive.min.js'></script>
  <script type='text/javascript' src='js/jquery.maskedinput.js'></script>
  <script type='text/javascript' src='js/cbrcpt.js'></script>
</html>

EDIT3:在Chrome控制台上打开响应时,信息的字符正确。

0 个答案:

没有答案