因此如果想对URL编码,最好不要使用此方法。 而encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换的。 encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL
当通过jquery传递中文参数时,页面出现了乱码,这时需要对参数进行处理:
javascript中代码:var subCompanyName = encodeURIComponent(encodeURIComponent($("#subCompanyName").val())); window.open("../powerStation/doSubAddForward.do?subCompanyId="+subCompanyId+"&subCompanyName="+subCompanyName, "添加明细", "width=620,height=360,left=200,location=no");注意对参数subCompanyName进行了 两次encodeURIComponent包装。
java代码中:
String subCompanyName = request.getParameter("subCompanyName"); subCompanyName = URLDecoder.decode(subCompanyName, "utf-8");
java.net.URIDecoder.decode(String s,String enc)方法说明: decode public static String decode(String s, String enc) throws UnsupportedEncodingException 使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。给定的编码用于确定任何 "%xy" 格式的连续序列表示的字符。 注:World Wide Web Consortium Recommendation 声明应使用 UTF-8。如果不使用该编码,可能造成不兼容性。这样页面中文格式就正常显示了。
哪位大侠有好的办法可以给我点提示。先行拜谢!
-------------------------------------
2011-09-06
上面是为了解决页面跳转的显示需要两次encodeURIComponent。
实际上一次encodeURIComponent之后,将其转为utf-8格式,然后在后台转回来即可。
js中:
encodeURIComponent($("#subCompanyName").val());
后台:
String subCompanyName = request.getParameter("subCompanyName");
subCompanyName = URLDecoder.decode(subCompanyName, "utf-8");