sendRedirect中url地址中文无法显示或乱码

首先是jsp页面获取地址栏的tableName中文值,

<%

String tableName = request.getParameter("tableName");

tableName = URLEncoder.encode(tableName,"iso-8859-1");//首先通过iso-8859-1进行编码

tableName = URLDecoder.decode(tableName,"utf-8");//再用utf-8解码,我的页面使用的utf-8编码

%>

将现在的tableName通过表单传到服务器,

取值为String tableName= request.getParameter(“tableName”);此时打印出来的tableName在控制台上是正常的。

但是要将tableName做为重定向的地址的参数,其重定向页面的地址栏中文为乱码,

再进行:

tableName = URLEncoder.encode(tableName,"utf-8");//首先通过utf-8进行编码

tableName = URLDecoder.decode(tableName,"iso-8859-1");//再用iso-8859-1解码,我的页面使用的utf-8编码

这样乱码问题解决了。

原本我页面使用的都是utf-8编码格式,但问题主要出在地址栏里面,地址栏里中文传递好像都是使用的ISO-8859-1的格式,所有有涉及到地址栏传递中文的,都要通过编码和解码两个步骤。









从JS里传URL到服务器,URL中有中文参数,服务器里读出的中文参数来的全是“?”,查了网上JS编码相关资料得以解决。

解决方法如下:

1、在JS里对中文参数进行两次转码

[java]  view plain copy
  1. var login_name = document.getElementById("loginname").value;  
  2. login_name = encodeURI(login_name);  
  3. login_name = encodeURI(login_name);  

2、在服务器端对参数进行解码

[c-sharp]  view plain copy
  1. String loginName = ParamUtil.getString(request, "login_name");  
  2. loginName = java.net.URLDecoder.decode(loginName,"UTF-8");  

上面这个网上查的,用了还是乱码,后来将在js中的两次编码,删掉了一次,就一次编码,竟然可以用了

很纠结啊,这个乱码真是够乱的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值