在java類中傳遞中文的編碼和解碼
平常我在jsp中傳遞引數,那麼在另外一個jsp中通過request.getParameter()得到引數值,中文和英文都能得到,但是在java中通過
Stirng LTloss=“中中中中-國國國國”;
requestURL=“/reserve/loss/IBNR/project/ibnrmode/prepaidrate.jsp?<loss="+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");