今天遇到這樣一個(gè)問題,通過JS傳遞的URL中包含了一個(gè)中文詞語,傳遞過去的值就變成了亂碼,后來上網(wǎng)上一查,才發(fā)現(xiàn),原來JS傳遞URL參數(shù)是采用UTF-8,而我們平常的地址欄傳遞編碼格式是“ISO-8859-1”,因此在通過JS傳遞參數(shù)的時(shí)候,必須先編碼,然后在使用的時(shí)候進(jìn)行解碼,針對(duì)此情況,我們可以寫下面的一個(gè)方法,對(duì)它方便的進(jìn)行轉(zhuǎn)換:
public static String decodeParamString(String paramValue)
{
if(paramValue==null)
return null;
try
{
String tmp0=URLEncoder.encode(paramValue, "ISO-8859-1");
String result=URLDecoder.decode(tmp0, "utf-8");
if(log.isInfoEnabled())
log.info("原始字符串:"+tmp0+",解碼結(jié)果:"+result);
return result;
}
catch(Exception e)
{
log.error("解碼失敗:", e);
return null;
}
}
不過在傳遞URL的時(shí)候,需要先對(duì)URL進(jìn)行處理url+=encodeURI(url);
然后在接收參數(shù)的時(shí)候進(jìn)行轉(zhuǎn)化,呵呵,通過實(shí)際測(cè)試,效果還是不錯(cuò)的!