您的位置:首页 > Web前端 > JavaScript

JSP中文乱码问题(get,post篇)

2016-05-08 14:59 423 查看
在JSP中,有时在提交时会出现乱码,

那么如何让解决呢?

public class RequsetDemo2 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

//post提交的乱码问题
request.setCharacterEncoding("utf-8");

//获取超链接传递过来的数据
System.out.println("-----获取超链接传递过来的数据-----");
String name = request.getParameter("name");
String pwd = request.getParameter("password");
System.out.println(name);
System.out.println(pwd);

System.out.println("-----获取表单传递过来的数据-----");
String nickname = request.getParameter("nickname");
System.out.println(nickname);

String[] hobbys = request.getParameterValues("hobby");
//System.out.println(Arrays.toString(hobbys));
for (int i = 0; i < hobbys.length; i++) {

//如果是get提交,处理乱码问题
String hb = hobbys[i];
//把中文转换成字节
byte[] ch = hb.getBytes("iso-8859-1");

System.out.println(Arrays.toString(ch));.
//再把字节以指定编码组合
String str = new String(ch,"utf-8");

//或者简写为
//String str=new String(request.getParameter("nickname").getBytes("ISO-8859-1"),"utf-8");

System.out.println(str);

/*
*或者服务器的server.xml中的
*Connector标签中添加URIEncoding="utf-8(也就是设置端口的那一个标签).
*如下
*<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>
*
*/	}

}

}


在网上也有其他的解决方式,比如添加编码过滤器(如spring中的),又或是自定义编码过滤器等等:

Spring中的编码过滤器
<!-- 编码过滤器 -->
<filter>
<filter-name>Spring character encoding filter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Spring character encoding filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  post get URL jsp 中文乱码