ios获取数据之encodeURI和decodeURI的实例

 更新时间:2017年11月08日 08:43:13   作者:小飞雪  
下面小编就为大家带来一篇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的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • iOS逆向工程之Hopper中的ARM指令详解

    iOS逆向工程之Hopper中的ARM指令详解

    这篇文章主要介绍了iOS逆向工程之Hopper中的ARM指令的相关资料,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • iOS中UIActionSheet动态添加按钮

    iOS中UIActionSheet动态添加按钮

    这篇文章主要介绍了iOS中UIActionSheet动态添加按钮功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-06-06
  • 详解iOS中多个网络请求的同步问题总结

    详解iOS中多个网络请求的同步问题总结

    这篇文章主要介绍了详解iOS中多个网络请求的同步问题总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Objective-C的缓存框架EGOCache在iOS App开发中的使用

    Objective-C的缓存框架EGOCache在iOS App开发中的使用

    这篇文章主要介绍了Objective-C的缓存框架EGOCache在iOS App开发中的使用,重点讲解了EGOCache对缓存过期时间的检测及处理,需要的朋友可以参考下
    2016-05-05
  • iOS实现无限循环滚动的TableView实战教程

    iOS实现无限循环滚动的TableView实战教程

    这篇文章主要给大家介绍了关于iOS实现无限循环滚动的TableView的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • iOS开发探索多线程GCD任务示例详解

    iOS开发探索多线程GCD任务示例详解

    这篇文章主要为大家介绍了iOS开发探索多线程GCD任务示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • iOS应用中使用Toolbar工具栏方式切换视图的方法详解

    iOS应用中使用Toolbar工具栏方式切换视图的方法详解

    这篇文章主要介绍了iOS应用中使用Toolbar工具栏方式切换视图的方法,文中讲解了UIToolbar的相关编写以及使用xib方式创建可切换视图程序的例子,需要的朋友可以参考下
    2016-04-04
  • IOS 禁止缩放页面的实现方法

    IOS 禁止缩放页面的实现方法

    这篇文章主要介绍了IOS 禁止缩放页面的实现方法的相关资料,这里主要介绍了IOS 10如何通过设置来实现禁止缩放及实现方法,需要的朋友可以参考下
    2017-07-07
  • iOS仿新闻tab标题栏效果

    iOS仿新闻tab标题栏效果

    这篇文章主要为大家详细介绍了iOS仿新闻tab标题栏效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • iOS Segment带滑动条切换效果

    iOS Segment带滑动条切换效果

    这篇文章主要为大家详细介绍了iOS Segment带滑动条切换,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03

最新评论