java - Ajax response.getWriter() 不支持特殊字符

标签 java javascript ajax

我正在用两种语言(英语和法语)制作表格。当有人输入名字时,表单使用 ajax 从我们的数据库中查询信息。可悲的是,当我使用 response.getWriter().write("Hey é è"); 时函数似乎不支持“锓è”等字符。

这是我的 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));


} 
}

我想知道是否可以用其他方式发送特殊字符。如果你能告诉我这个函数使用什么编码,那就太好了!!

最佳答案

基于问题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");

关于java - Ajax response.getWriter() 不支持特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14898333/

相关文章:

javascript - 将 jQuery (ajax) 与 TypeScript 结合使用

java - Kafka 宕机时如何处理 IOException?

javascript - 美化 JSON 对象警报

java - WildFly:无法在 Windows 上打开管理面板

javascript - 如何使用javascript调用按钮onclick并停止回发

Javascript 切换启用/禁用

ajax - Ajax加载后重新加载Cufon,请帮忙

javascript - 在 Rails 4 上处理 AJAX 的正确方法是什么?

java - log4j.xml 日志记录在 spring Controller 中不起作用?

java - javax 的 NotNull 在 Java 8 中被移除了吗?