比如说,我有一个地址栏,它是一个名为 textField 的 UITextField 和一个名为 webView 的 UIWebView。大多数情况下,以下代码有效:
[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);})();
根据这个答案,我可以stringByAddingPercentEscapesUsingEncoding
用来转义字符串,并且确实适用于这种情况。
我的问题是:在将字符串传递给 webView 之前总是调用它是否安全?stringByAddingPercentEscapesUsingEncoding:
以下是否有任何后果?
[webView loadURL:[NSURL URLWithString:[textField.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]]
谢谢!
编辑:我所说的“安全”的意思是,虽然这适用于包含 Unicode 字符的 URL,但它仍然适用于“普通”URL 吗?
编辑 2:如果这是“安全的”,为什么它不是默认行为?