
前段時(shí)間,做馬甲包相關(guān)的知識(shí),把H5資源下載到本地,然后從本地解析js,渲染并加載css和圖片等。再此過程中,遇到了URL字符串自動(dòng)轉(zhuǎn)義的問題,記錄一下~
項(xiàng)目需要從本地加載的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)我允許的情況下,搖身一變,我不認(rèn)識(shí)了。QAQ~
URL編碼和ASCII碼值間的轉(zhuǎn)換:
+ URL 中+號(hào)表示空格 %2B
空格 URL中的空格可以用+號(hào)或者編碼 %20
/ 分隔目錄和子目錄 %2F
? 分隔實(shí)際的URL和參數(shù) %3F
% 指定特殊字符 %25
# 表示書簽 %23
& URL 中指定的參數(shù)間的分隔符 %26
= URL 中指定參數(shù)的值 %3D
那既然這樣,就想著解碼吧,但是試了好幾種方法,都無法阻擋Url轉(zhuǎn)義,也是醉了~
做為一名打不死的小強(qiáng),豈能就此放棄,解碼走不通,能不能換一種方法吶?!結(jié)果,還真被我想出來了~
對(duì)比兩個(gè)Url鏈接,除了# 被%23替換之外,鏈接還加了前綴file:/,我們能不能直接在初始化之前,自己拼接Url加上前綴,接著用我們常見的Url初始化方法,來初始化吶,答案是肯定de
indexHtmlPath = [NSString stringWithFormat:@"file:/%@", indexHtmlPath];
NSURL * URL = [NSURL URLWithString: indexHtmlPath];
如果你有更好的解決方法,歡迎留言~