get方式url传递值是中文乱码JavaScript/Java工具类编码及解码互用

     最近快上线的新项目,在window平台上好好的,可是部署到Linux上就出现了部分乱码问题,费了一番周折才发现,凡是通过get方式传递的中文都会出现乱码现象,也怀疑是Linux系统编码的问题,或者是weblogic做过集群,可是但是自己不负责这块,安装系统和服务器的人也离开了,只好从程序下手了。

     一开始找原因的时候,就从jsp页面的字符值着手,都是同一的GBK格式,在后来在Action做处理也不管用,然后想到把传递的中文字符编码成其他格式,然后通过解码方式在对其传递值进行解码。

     传递的时候,是通过js获取值,然后传递的

     A.jsp:parent.HiddFrame.location.href="../ywflcx/dwgjqkylb.jsp?dbname="+dbname+"&ndxz="+ndxz;

     到另一个页面获取数据可是通过

     B.jsp:request.getParameter("---");

     C.jsp:nbzyForm.ndxz.value = "<c:out value="${param[ndxz]}"/>"; //jsp页面加载时赋值 function onLoad(){}

     这样的话,我们在A页面做传递值编码,在B页面做传递值解码;

     那么就要灵活的使用javascript和java工具类的相互编码及解码,因为你不知这个页面采用编码后,

     1、下一个页可能是给一个From赋值 js

     2、直接通过request获取               request

     要知道前者可是通过js相应方式解码,后者可不行,因为使用request获取值时,jsp页面首先执行小脚本里面的内容,所以得采用java工具类解码。

 

 ----- JavaScript 方式编码、解码

    /**
 * 对传递值进行编码
 * wenglin 2010-07-30
 */
function setEncodeURI(str){
  var result = encodeURI(str);
  result =  encodeURI(result);
  return result;
}

/**
 * 对传递值进行解码
 * wenglin 2010-07-30
 */
function setdecodeURI(str){
  var result = decodeURI(str);
  result =  decodeURI(result);
  return result;
}

------Java工具类编码、解码

/**
  * 解码方法
  * @param doStr
  * @return
  * @throws Exception
  *@author wenglin 2010-07-30
  */
 public static String doUrlDecoderStr(String doStr) throws Exception{
  try {
   String resultStr = "";
   if(doStr != ""){
        resultStr=new String(doStr.getBytes());
        resultStr=java.net.URLDecoder.decode(resultStr,"UTF-8");//

   }
   return resultStr;
  } catch (UnsupportedEncodingException e) {
   throw new UnsupportedEncodingException("解码出错:UrlDecoderStrCommons"+e.getMessage());
  }
 
 }
 
 /**
  * 编码方法
  * @param doStr
  * @return
  * @throws Exception
  *@author wenglin 2010-07-30
  */
 public static String doUrlEncoderStr(String doStr) throws Exception{
  try {
   String resultStr = "";
   if(doStr != ""){
        resultStr=new String(doStr.getBytes());
        resultStr=java.net.URLEncoder.encode(resultStr, "UTF-8");//解码

   }
   return resultStr;
  } catch (UnsupportedEncodingException e) {
   throw new UnsupportedEncodingException("解码出错:UrlDecoderStrCommons"+e.getMessage());
  }
 
 }

  这样,就可以根据情况相互编码,解码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值