现在的位置: 首页 > 综合 > 正文

jquery中文乱码

2018年02月07日 ⁄ 综合 ⁄ 共 1395字 ⁄ 字号 评论关闭

 escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,

因此如果想对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。如果不使用该编码,可能造成不兼容性。

这样页面中文格式就正常显示了。
但是后台还是报了异常,并不影响正常显示。
因为我的项目用的是GBK编码,这与java.net.URIDecoder.decode(String s,String enc)方法的说明相一致。
但是如果后台能够不报异常岂不更好?

哪位大侠有好的办法可以给我点提示。先行拜谢!

-------------------------------------

2011-09-06

上面是为了解决页面跳转的显示需要两次encodeURIComponent。

实际上一次encodeURIComponent之后,将其转为utf-8格式,然后在后台转回来即可。

js中:

encodeURIComponent($("#subCompanyName").val());  

后台:

String subCompanyName = request.getParameter("subCompanyName");

subCompanyName = URLDecoder.decode(subCompanyName, "utf-8");

抱歉!评论已关闭.