今天遇到这样一个问题,通过JS传递的URL中包含了一个中文词语,传递过去的值就变成了乱码,后来上网上一查,才发现,原来JS传递URL参数是采用UTF-8,而我们平常的地址栏传递编码格式是“ISO-8859-1”,因此在通过JS传递参数的时候,必须先编码,然后在使用的时候进行解码,针对此情况,我们可以写下面的一个方法,对它方便的进行转换:
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+",解码结果:"+result);
return result;
}
catch(Exception e)
{
log.error("解码失败:", e);
return null;
}
}
不过在传递URL的时候,需要先对URL进行处理url+=encodeURI(url);
然后在接收参数的时候进行转化,呵呵,通过实际测试,效果还是不错的!