前段時間灭返,做馬甲包相關的知識景用,把H5資源下載到本地涵叮,然后從本地解析js,渲染并加載css和圖片等伞插。再此過程中割粮,遇到了URL字符串自動轉(zhuǎn)義的問題,記錄一下~
項目需要從本地加載的Url鏈接是
/var/mobile/Containers/Data/Application/22438350-8530-4B0B-BFDD-FBCE7A9F873B/Documents/components/dist/main.html#/main
但是調(diào)用
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
杠步,結(jié)果吶氢伟,鎩羽而歸~
原來,webView的Url鏈接中的特殊字符串在未經(jīng)我允許的情況下幽歼,搖身一變朵锣,我不認識了。QAQ~
URL編碼和ASCII碼值間的轉(zhuǎn)換:
+ URL 中+號表示空格 %2B
空格 URL中的空格可以用+號或者編碼 %20
/ 分隔目錄和子目錄 %2F
? 分隔實際的URL和參數(shù) %3F
% 指定特殊字符 %25
# 表示書簽 %23
& URL 中指定的參數(shù)間的分隔符 %26
= URL 中指定參數(shù)的值 %3D
那既然這樣甸私,就想著解碼吧诚些,但是試了好幾種方法,都無法阻擋Url轉(zhuǎn)義皇型,也是醉了~
做為一名打不死的小強诬烹,豈能就此放棄,解碼走不通弃鸦,能不能換一種方法吶绞吁?!結(jié)果唬格,還真被我想出來了~
對比兩個Url鏈接家破,除了#
被%23
替換之外颜说,鏈接還加了前綴file:/
,我們能不能直接在初始化之前,自己拼接Url加上前綴汰聋,接著用我們常見的Url初始化方法门粪,來初始化吶,答案是肯定de
indexHtmlPath = [NSString stringWithFormat:@"file:/%@", indexHtmlPath];
NSURL * URL = [NSURL URLWithString: indexHtmlPath];
如果你有更好的解決方法烹困,歡迎留言~