2013-02-15 66 views
0

我使用两种语言(英语和法语)制作表单。当有人输入其名称时,表单使用ajax从我们的数据库查询信息。可悲的是,当我使用response.getWriter()。write(“Heyéè”);功能似乎不支持像'é''è'这样的字符。Ajax response.getWriter()不支持特殊字符

这里是我的JavaScript和Ajax:

 function fillBlanks(idOfInputText,valueOfInputText) 
    { 

     //Prepare a new ajaxRequest. 
     if (window.XMLHttpRequest) 
     {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
     } else {// code for IE6, IE5 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

     //Ajax receiving the response in this function 
     xmlhttp.onreadystatechange = function() 
     { 
      //state 4 is response ready. 
      //Status 200 is page found. 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
       //Change the content of the select to ajax result. 
       var content = []; 
       content = decode(xmlhttp.responseText); 

       document.getElementById('lastName').innerHTML = content[0]; 
       document.getElementById('firstName').innerHTML = content[1]; 
       document.getElementById('defaultPrinter').innerHTML = content[2]; 
       document.getElementById('dropDownRespExistant').innerHTML = content[3]; 

      } 
     }; 

     //Send the Ajax request. 
     xmlhttp.open('GET','mainServlet?command=ajax.FillBlanksHtml&ID='+ idOfInputText + '&VALUE=' + valueOfInputText, true); 
     xmlhttp.send(); 
    } 

这是我的java类:

public class FillBlanksHtmlCommand extends FrontCommand 
{ 
public static String userName; 
public static String lastName; 
public static String firstName; 

@Override 
public void processRequest(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException 
{ 
    String value = new String(request.getParameter("VALUE"));//get the ajax value 

    response.getWriter().write(OracleUserFinder.findHtmlCodeForOracleUser(value)); 


} 
} 

我想知道,如果它是posssible用另一方式发送特殊字符。如果你能告诉我这个函数使用什么编码,那会很好!

回答

2

根据问题Detecting the character encoding of an HTTP POST request,您应该将您的请求的字符编码从ISO-8859-1更改为UTF-8,以使您的请求正常工作。

最简单的方法是(从问题的答案):

<form accept-charset="UTF-8"> 

虽然你可以使用任何其他解决方案的提出有。

对于响应,你只需要字符集添加到UTF-8如下所示:Setting the HTTP charset parameter

在servlet(或Controller类),只需添加以下代码:

response.setContentType("text/xml; charset=UTF-8"); 
+0

谢谢你Luiggi!我只是添加了response.setcontentType,它完美地工作! – Benchy 2013-02-15 16:06:15