您的位置:首页 > Web前端 > JavaScript

IE下 JS传参出现中文乱码解决

2017-11-27 14:53 337 查看

问题:

在IE浏览器下选择要查询的商品类别之后点击查询查不到相关记录,但是谷歌火狐可以正常使用的。

经过调试在Controller里发现传过去的参数已经变成乱码了,所以后台查不到记录。



分析:

controller里面的参数是从前台js传过去的,所以问题肯定出在js和controller,以为浏览器的原因,这里需要先编码再解码保证参数的正确传递。

解决:

1.看配置文件下是否是UTF-8编码,如果不是,在Connector标签中加入URIEncoding= “UTF-8”。

2.使用js的escape()编码,与之对应的是unescape()解码,但是ECMAScript v3 已从标准中删除了 unescape() 函数,并反对使用它,因此应该用 decodeURI() 和 decodeURIComponent() 取而代之。

实践:

//在JS中编码
data: "&categroyName=" + escape($("#cmb_itemcategory").val()),
-------------------------------
//在Controller中解码
vmCategoryrUser.CategoryName = Server.UrlDecode(categroyName);


效果图:

已传入正常参数。



补充(三种编码):

js中编码的方式大致有escape(),encodeURI() , encodeURI(Component) 三种。

1. escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。

2. encodeURI() 函数可把字符串作为 URI 进行编码。

3. encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。

本次选中escape()编码的原因是这里没有涉及到URL编码只涉及到参数字符串的编码。这三种编码的具体解释和实例请点击 这里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: