get方式url傳遞值是中文亂碼JavaScript/Java工具類編碼及解碼互用

來源:互聯網
上載者:User

     最近快上線的新項目,在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());
  }
 
 }

  這樣,就可以根據情況相互編碼,解碼。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.