Jsp中用get方式传递中文字符

      我们在jsp中进行页面重定向的时侯实用response.sendRedirect("url?参数");

这时候,如果我们想传递的参数是中文,那么很可能会遇到传过去以后以乱码显示。

这是因为,用response.sendRedirec("url?参数")的方式传值的提交方式是get方式。所以才会出现乱码问题。

那么,如何解决呢?

      首先,在传值页面导入java.net.*;包,然后利用里面的URLEncoder.encode(String str)方法将要传递的中文参数转换为另一种形式的编码。这样在url里面传递时就不会显示为乱码,而是%DB%FD%样式的编码。

      其次,就是在读取参数页面将其转码为中文格式就好了。

方法是new String(读取的参数.getBytes("ISo-8859-1"),"UTF-8");然后用一个String 类型变量接收一下就能拿到传过来的中文值。

      下面举个例子:

假设有页面a.jsp和b.jsp。且两个页面的pageEncoding都为GBK,现在要从a.jsp向b.jsp中传递一个“你好”;

 

a.jsp

<%@ import java.net.*%>

    <%

             Stirng str="你好";

              str=str.UrlEncoder.encode(str);

             response.sendRedirect("b.jsp?name="+str);

     %>

 

b.jsp

    <%

           String getName=new String(request.getParameter("name").getBytes("iso-8859-1"),"GBK");

           out.println(getName);

     %>

 

这样,b.jsp就可以正常输出“你好”了。

需要注意的:

         b.jsp中一定要new一个新的字符串接收读到的信息,否则还会是乱码。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值