python querystring encode_ios获取数据之encodeURI和decodeURI的实例

在app开发过程中,免不了要进行ios的数据处理,在ios传递数据的过程中,会出现json数据获取不到的情况,这时候就轮到encodeuri 和 decodeuri出马了。

1、encodeuri,decodeuri

encodeuri:将字符串作为 uri 进行编码

•不会对 ascii 字母和数字进行编码,也不会对这些 ascii 标点符号进行编码( 即:- _ . ! ~ * ' ( ) )。

•目的是对 uri 全部的编码,因此对在 uri 中具有特殊含义的 ascii 标点符号(即:;/?:@&=+$,#)是不会进行编码的。所以,此函数别名为 encodeurl 不为过,相当于 php 的 url_encode 。

例子:

encodeuri("http://ydr.me?user=hello 云淡然");

// "http://ydr.me?user=hello%20%e4%ba%91%e6%b7%a1%e7%84%b6"

decodeuri("http://ydr.me?user=hello%20%e4%ba%91%e6%b7%a1%e7%84%b6");

// http://ydr.me?user=hello 云淡然

由于 encodeuri 是对 url 的完整编码,所以常用于url的跳转之处:

location.href=encodeuri('http://baidu.com/s?word=hello 云淡然');

// "http://baidu.com/s?word=hello%20%e4%ba%91%e6%b7%a1%e7%84%b6"

在各个浏览器打开该地址,表现均不相同:

•ie的url表现的最规范(完全按照encodeuri编码)

•chrome的url表现比较规范(部分按照encodeuri编码)

•firefox的url表现最不规范(完全没有安装encodeuri编码)

虽然各个浏览器的url表现均不相同,但在 firefox 和 chrome 中url的可读性最高,ie最低。

2、encodeuricomponent 和 decodeuricomponent

encodeuri 是对完整的url进行编码,而 encodeuricomponent 是对url的参数进行编码的,并且其编码特点如下:

•不会对 ascii 字母和数字进行编码,也不会对这些 ascii 标点符号进行编码(即: - _ . ! ~ * ' ( ) )。

•目的是对 uri 部分的编码,因此对在 uri 中具有特殊含义的 ascii 标点符号(即:;/?:@&=+$,#)是会进行编码的。

encodeuricomponent("http://ydr.me?user=hello world");

// "http%3a%2f%2fydr.me%3fuser%3dhello%20world"

decodeuricomponent("http%3a%2f%2fydr.me%3fuser%3dhello%20world");

// http://ydr.me?user=hello world

由于 encodeuricomponent 是对url部分编码,因此常用于querystring、hashsearch、hashpath以及cookie中,如:

// querystring 编码

"http://ydr.me?from=" + encodeuricomponent("http://baidu.com");

// "http://ydr.me?from=http%3a%2f%2fbaidu.com"

// hashsearch、hashpath 编码

"http://ydr.me#?from=" + encodeuricomponent("http://baidu.com");

// "http://ydr.me#?from=http%3a%2f%2fbaidu.com"

"http://ydr.me#!from/" + encodeuricomponent("http://baidu.com");

// "http://ydr.me#!from/http%3a%2f%2fbaidu.com"

// cookie 编码

document.cookie = "from=" + encodeuricomponent("http://baidu.com");

// "from=http%3a%2f%2fbaidu.com"

3、escape 和 unescape

escape 与 encodeuri 和 encodeuricomponent 类似,都是对字符串进行编码。不同点在于该方法不会对 ascii 字母和数字进行编码,也不会对这些 ascii 标点符号(即: * @ - _ + . / )进行编码,其他所有的字符都会被转义序列替换。

注意:ecmascript v3 反对使用该方法,应用使用 decodeuri() 和 decodeuricomponent() 替代它。

以上这篇ios获取数据之encodeuri和decodeuri的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值