url 编码 js url传参中文乱码解决方案

发布网友

我来回答

1个回答

热心网友

配置文件web.config中,在节中加上整个网站的编码方式,如<globalization fileEncoding="GB2312" requestEncoding="GB2312" responseEncoding="GB2312"/>。这样参数就以gb2312的中文编码方式传输,而非默认的utf-8。

在传参时,先进行编码再传输。例如,将字符串mm编码为:string mm=Server.URLEncode(你);然后使用Response.Redirect(index.aspx?mm=+mm);来将编码后的字符串传入接收页。在接收页解码时,使用string mm = Server.URLDecode(Requext.querystring(mm));来还原字符串。

JavaScript中存在几种对URL字符串进行编码的方法:escape(),encodeURI(),以及encodeURIComponent()。

escape()方法采用ISO Latin字符集对指定的字符串进行编码。所有空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码,如空格符对应%20。不会被此方法编码的字符有:@ * / +

encodeURI()方法将URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符有:@ # $& * ( ) = : / ; ? + 'encodeURIComponent()方法将URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,此方法对更多字符进行编码,包括/等字符。若字符串包含URI部分,不可使用此方法编码,否则URL将显示错误。不会被此方法编码的字符有:* ( ) '。

对于中文字符串,若不希望编码格式转换为UTF-8(即页面和目标页面编码一致),使用escape即可。若页面编码为GB2312或其它,接收页面为UTF-8编码,应使用encodeURI或encodeURIComponent。

注意,encodeURI/encodeURIComponent在JavaScript 1.5之后引入,而escape在1.0版本已有。传参时使用encodeURI("url参数")进行编码。接收时,使用decodeURI("接收到的值")解码。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com