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

在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>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Font Tian

写的很好,请给我钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值