Java Request.getparameter从输入中丢弃特殊字符

Java Request.getparameter从输入中丢弃特殊字符,java,jsp,servlets,Java,Jsp,Servlets,我试图从带有特殊字符的文本框中获取一些用户输入值。但当我得到它时,字符串就被特殊字符丢弃了 就像我传递输入一样:poly&&(mer@) 下面的代码将此字符串命名为:poly HttpServletRequest request = ServletActionContext.getRequest(); request.setCharacterEncoding("UTF-8"); String text = (new String(request.getParam

我试图从带有特殊字符的文本框中获取一些用户输入值。但当我得到它时,字符串就被特殊字符丢弃了

就像我传递输入一样:poly&&(mer@) 下面的代码将此字符串命名为:poly

HttpServletRequest request = ServletActionContext.getRequest();
        request.setCharacterEncoding("UTF-8");

        String text = (new String(request.getParameter("searchBarField")
                .getBytes("UTF-8")));

在我的jsp中,有一个字符编码标记。请建议。

您的应用程序服务器似乎未配置为支持Unicode字符。如果您使用的是Tomcat容器。在连接器中将URIEncoding设置为
UTF-8

<Server port="8105" shutdown="SHUTDOWN">

 <Service name="Catalina">
    <Connector port="8180" URIEncoding="UTF-8" />
    <Engine name="Catalina" defaultHost="localhost">
        <Host name="localhost" appBase="webapps" />
    </Engine>
 </Service>
</Server>

另一种方法是编写一个
过滤器
,用于处理web应用程序的字符编码。还要注意这一点。

您的应用程序服务器似乎没有配置为支持Unicode字符。如果您使用的是Tomcat容器。在连接器中将URIEncoding设置为
UTF-8

<Server port="8105" shutdown="SHUTDOWN">

 <Service name="Catalina">
    <Connector port="8180" URIEncoding="UTF-8" />
    <Engine name="Catalina" defaultHost="localhost">
        <Host name="localhost" appBase="webapps" />
    </Engine>
 </Service>
</Server>

另一种方法是编写一个
过滤器
,用于处理web应用程序的字符编码。另外,请注意这一点。

我已经解决了您的问题,如下所示,它工作得非常完美

我的JSP是index.JSP

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
        pageEncoding="ISO-8859-1" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <form action="GetParameter">
    Name:<input type="text" name="name">
    <br>
    <input type="submit" value="submit" />
    </form>
    </body>
    </html>

希望它能与您的代码配合使用……

我已按如下方式解决了您的问题,而且效果非常好

我的JSP是index.JSP

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
        pageEncoding="ISO-8859-1" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <form action="GetParameter">
    Name:<input type="text" name="name">
    <br>
    <input type="submit" value="submit" />
    </form>
    </body>
    </html>

希望它能与您的代码配合使用……

当您向服务器发送HTTP请求时,请确保您的URL已首先编码(例如:Javascript中的encodeURIComponent()):

}

在服务器端,应该已经对其进行解码:

String serialnumber = request.getParameter("serialnumber");

当您向服务器发送HTTP请求时,请确保首先对URL进行编码(例如:Javascript中的encodeURIComponent()):

}

在服务器端,应该已经对其进行解码:

String serialnumber = request.getParameter("serialnumber");

希望这个链接的答案对你有帮助!。。希望这个链接的答案对你有帮助!。。我得到了答案。实际上,问题是我的jsp。我正在通过location.href调用action。当我使用post时,它工作正常。谢谢你们的建议。谢谢@krupa。我的问题已经解决了,但并不是用您给出的解决方案解决的。我也遇到了同样的问题,为我解决了这个问题:我在jsp页面中将“ISO-8859-1”替换为“UTF-8”。我的jsp页面声明如下:我得到了答案。实际上,问题是我的jsp。我正在通过location.href调用action。当我使用post时,它工作正常。谢谢你们的建议。谢谢@krupa。我的问题已经解决了,但并不是用您给出的解决方案解决的。我也遇到了同样的问题,为我解决了这个问题:我在jsp页面中将“ISO-8859-1”替换为“UTF-8”。我的jsp页面声明如下所示:我尝试了这个,但没有成功。实际上,问题在于jsp。不是很好用。非常感谢。我试过了,但没用。实际上,问题在于jsp。不是很好用。谢谢。