iOS URL 字符转义问题

图片发自简书App

前段时间,做马甲包相关的知识,把H5资源下载到本地,然后从本地解析js,渲染并加载css和图片等。再此过程中,遇到了URL字符串自动转义的问题,记录一下~

项目需要从本地加载的Url链接是

/var/mobile/Containers/Data/Application/22438350-8530-4B0B-BFDD-FBCE7A9F873B/Documents/components/dist/main.html#/main

但是调用

NSURL * URL = [NSURL fileURLWithPath:indexHtmlPath];

打印URL.absoluteString却变成了

file://var/mobile/Containers/Data/Application/22438350-8530-4B0B-BFDD-FBCE7A9F873B/Documents/components/dist/main.html%23/main

什么鬼,我的 #%23吃了,快还我#。我找来了“谷歌”和“百度”两位大神来赶走%23,结果呐,铩羽而归~

原来,webView的Url链接中的特殊字符串在未经我允许的情况下,摇身一变,我不认识了。QAQ~

URL编码和ASCII码值间的转换:

     +    URL 中+号表示空格                      %2B
     空格 URL中的空格可以用+号或者编码              %20
     /   分隔目录和子目录                         %2F
     ?    分隔实际的URL和参数                     %3F
     %    指定特殊字符                           %25
     #    表示书签                              %23
     &    URL 中指定的参数间的分隔符               %26
     =    URL 中指定参数的值                      %3D

那既然这样,就想着解码吧,但是试了好几种方法,都无法阻挡Url转义,也是醉了~
做为一名打不死的小强,岂能就此放弃,解码走不通,能不能换一种方法呐?!结果,还真被我想出来了~

对比两个Url链接,除了#%23替换之外,链接还加了前缀file:/,我们能不能直接在初始化之前,自己拼接Url加上前缀,接着用我们常见的Url初始化方法,来初始化呐,答案是肯定de

indexHtmlPath = [NSString stringWithFormat:@"file:/%@", indexHtmlPath];
NSURL * URL = [NSURL URLWithString: indexHtmlPath];

如果你有更好的解决方法,欢迎留言~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文链接http://www.cnblogs.com/kenshincui/p/4186022.html 音频在i...
    Hyman0819阅读 21,828评论 4 74
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,010评论 19 139
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 3,726评论 2 7
  • 星辰变幻 你我都是小小的赶路人 当天空破晓 太阳光线太大 挡住了星星的光 你说看不见星星了 于是你独自失语 太阳的...
    jennydeng_阅读 234评论 0 0
  • 菜市场是一个地方的概貌,整洁有序也好,杂乱无章也罢,都体现了生活的常态。鱼有腥臭,下雨天泥有草腥味,鸡鸭的屎味,卖...
    肉娃阅读 562评论 1 4