1. 程式人生 > >在java類中傳遞中文的編碼和解碼

在java類中傳遞中文的編碼和解碼

平常我在jsp中傳遞引數,那麼在另外一個jsp中通過request.getParameter()得到引數值,中文和英文都能得到,但是在java中通過 

Stirng LTloss=“中中中中-國國國國”;

requestURL=“/reserve/loss/IBNR/project/ibnrmode/prepaidrate.jsp?&LTloss="+LTloss”

HttpRespons response=request.sendPost(requestURL);

jsp:String str = request.getParameter(“LTloss”);是亂碼,

所以進行轉碼和解碼。

//java類傳遞url傳遞中文引數的編碼和解碼方法
public static String encode(String str,String charset) throws UnsupportedEncodingException{
str = java.net.URLEncoder.encode(str, charset);
    return str.replaceAll("%", "_");//在測試中可以直接將轉碼後的內容放入url裡,但是在jsp中得到的字元仍然是亂碼,只能將轉碼後的字元中的%替換成“_”,也可以是其他只要能在轉碼解碼成功就行,曾用“+”但結果仍是無效。
}
public static String decode(String str,String charset) throws UnsupportedEncodingException{
str=str.replaceAll("\\_", "%");
return java.net.URLDecoder.decode(str, charset);
}

在java中先轉碼呼叫encode():LTloss=this.encode(LTloss, "GBK");

在jsp中在解碼掉用decode():String strLTloss = IBNRTemplete.decode(request.getParameter("LTloss"), "GBK");