我试图从带有特殊字符的文本框中获取一些用户输入值。但是当我得到它时,字符串会被特殊字符丢弃。
喜欢如果我传递输入:poly&&(mer @) 下面的代码将此字符串赋予:poly
HttpServletRequest request = ServletActionContext.getRequest();
request.setCharacterEncoding("UTF-8");
String text = (new String(request.getParameter("searchBarField")
.getBytes("UTF-8")));
在我的jsp中,字符编码标签就在那里。请建议。
答案 0 :(得分:2)
您的应用程序服务器似乎未配置为支持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>
设置request.setCharacterEncoding("UTF-8")
并获取参数:
String text=request.getParameter("searchBarField");
另一种方法是编写一个Filter
来处理您的Web应用程序的字符编码。另请查看此SO Q&A 。
答案 1 :(得分:2)
我按照以下方式处理了您的问题,但效果很好..
我的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>
按照我的servlet来处理请求。
public class GetParameter extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
PrintWriter out = response.getWriter();
out.write("Name is " + name);
}
希望它能与您的代码一起使用....
答案 2 :(得分:0)
当您向服务器发送HTTP请求时,请确保首先对您的URL进行编码(例如:JavaScript中的 encodeURIComponent()):
$.ajax({
type: "GET",
url: "/Server1/endpoint?serialnumber=" + encodeURIComponent(x),
success: function(data, status){
},
error: function (jqXHR, exception) {
}
});
}
在服务器端,它应该已经被解码:
String serialnumber = request.getParameter("serialnumber");