前言
小编最近在做前端页面功能时,遇到了URL传中文参数时,在js中获取时乱码的问题,上网搜索了相关的解决方案,实践起来有些麻烦,便从项目中查看有没有类似的解决乱码的方案,果然功夫不负有心人,找到了简便的方式,并成功解决。
中文乱码
一、window.location.href 传参
想要传送cardName的中文信息,如下代码所示:
<em v-if="card.cardType=='1' && card.expire!='1'" class="payNow" v-on:click="window.location.href='$!{path}/page?
pagePath=charge/reCharge&cardCode='+card.cardCode+'&rechargeAmount='+card.rechargeAmount+'&companyCode='+movieCode+
'&cardName='+card.cardName" v-if="card.isRecharge == '0'">立即充值</em>
二、js中GetQueryString方式获取
var cardName = GetQueryString('cardName');
三、结果--中文乱码

使用encodeURLComponent
一、参考下面的代码使用encodeURIComponent
window.location =confUrl+ '&cardName=' +
encodeURIComponent(encodeURIComponent(card.cardName))
+'&prefAccount=' +
card.cardCode+"&bindType=0&voucherParam="+encodeURIComponent(JSON.stringify(data.resultData));
二、js中使用decodeURIComponent解码
var cardName = decodeURIComponent(GetQueryString('cardName'));
三、 成功获取中文参数

普及encodeURI
一、编码解码URL
1. encodeURI 和 decodeURI 函数操作的是完整的 URI
这俩函数假定 URI 中的任何保留字符都有特殊意义,所有不会编码它们。
2.encodeURIComponent 和 decodeURIComponent 函数操作的是组成 URI 的个别组件
这俩函数假定任何保留字符都代表普通文本,所以必须编码它们,所以它们(保留字符)出现在一个完整 URI 的组件里面时不会被解释成保留字符了。
二、URL的认识
1.统一资源标识符,或叫做 URI
用来标识互联网上的资源(网页或文件),怎样访问这些资源的传输协议(HTTP 或 FTP)的字符串。
除了encodeURI、encodeURIComponent、decodeURI、decodeURIComponent四个用来编码和解码 URI 的函数之外ECMAScript 语言自身不提供任何使用 URL 的支持。
2.url组成形式
一个 URI 是由组件分隔符分割的组件序列组成。其一般形式是:Scheme : First / Second ; Third ? Fourth
其中斜体的名字代表组件;“:”, “/”, “;”,“?”是当作分隔符的保留字符。
小结
小编在解决这个bug的过程中,认识到站在巨人的肩膀上,善于利用手头的资源是非常有必要的,这样可以大大地增加我们的知识面,扫除知识盲区,希望这点小知识,对您有所帮助!
感谢您的访问!
828

被折叠的 条评论
为什么被折叠?



