說,我有一個地址欄,它是一個名爲textField的UITextField和一個名爲webView的UIWebView。大多數的跟蹤代碼工作時間:[NSURL URLWithString:stringContainingSpecialCharacters]
[webView loadURL:[NSURL URLWithString:textField.text]];
當我把一些長的字符串包含特殊字符,URLWithString:
簡單地返回null
。可讀性書籤是一個很好的例子:
javascript:(function(){readConvertLinksToFootnotes=true;readStyle='style-newspaper';readSize='size-medium';readMargin='margin-wide';_readability_script=document.createElement('script');_readability_script.type='text/javascript';_readability_script.src='http://lab.arc90.com/experiments/readability/js/readability.js?x='+(Math.random());document.documentElement.appendChild(_readability_script);_readability_css=document.createElement('link');_readability_css.rel='stylesheet';_readability_css.href='http://lab.arc90.com/experiments/readability/css/readability.css';_readability_css.type='text/css';_readability_css.media='all';document.documentElement.appendChild(_readability_css);_readability_print_css=document.createElement('link');_readability_print_css.rel='stylesheet';_readability_print_css.href='http://lab.arc90.com/experiments/readability/css/readability-print.css';_readability_print_css.media='print';_readability_print_css.type='text/css';document.getElementsByTagName('head')[0].appendChild(_readability_print_css);})();
據this answer,我可以使用stringByAddingPercentEscapesUsingEncoding
逃脫字符串,它的確爲這種情況下正常工作。
我的問題是:這是安全的總是調用stringByAddingPercentEscapesUsingEncoding:
之前將字符串傳遞給webView?以下有什麼後果?
[webView loadURL:[NSURL URLWithString:[textField.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]]
謝謝!
編輯:我的意思是'安全'是,雖然這與包含Unicode字符的URL一起工作,它是否仍然正常'正常'的URL嗎?編輯2:如果這是'安全',爲什麼它不是默認行爲?
感謝。我並不關心內存管理方面 - 我所說的「安全」是指雖然它適用於包含Unicode字符的URL,但它對'普通'URL仍然可以正常工作嗎? – 2011-01-25 17:05:21
是的,當然。 – Max 2011-01-25 17:08:15