最近在学servlet,正学到乱码问题的解决。当我在html中用get提交中文到encoding servlet中,接着在encoding中重定向到Welcome servlet中提取参数出现乱码!
html
<form action="/Servlet1/encoding" method="get">
u:<input type="text" name="username"/>
<input type="submit"/>
</form><br/>
encoding.java(servelt)
String username=request.getParameter("username");
response.sendRedirect("/Servlet1/Welcome?username="+username);
Welcome.java (servlet)
String username=request.getParameter("username");
System.out.println(username); //在这出现乱码
无论用什么都无法解决,new String(request.getParameter("username").getBytes("iso-8859-1"),"utf-8");也没有用。
最终在encoding.java 中加了一句username=new String(username.getBytes("utf-8"),"iso-8859-1");居然解决了。
由此可见,在tomcat中地址栏的地址编码应该是iso8859-1,当在地址栏中加入其它编码的字段,会出现乱码,故而将username转换为iso8859-1编码再转发,问题解决了!