iphone - [NSURL URLWithString:stringContainingSpecialCharacters] -
say, have address bar uitextfield called textfield, , uiwebview named webview. of time follow code works:
[webview loadurl:[nsurl urlwithstring:textfield.text]];
when put in long string special characters, urlwithstring:
returns null
. readability bookmarklet example:
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);})();
according this answer, can use stringbyaddingpercentescapesusingencoding
escape string, , indeed works fine case.
my question is: is safe call stringbyaddingpercentescapesusingencoding:
before passing string webview? following have consequences?
[webview loadurl:[nsurl urlwithstring:[textfield.text stringbyaddingpercentescapesusingencoding:nsutf8stringencoding]]]
thanks!
edit: mean 'safe' while works urls containing unicode characters, still work fine 'normal' urls?
edit 2: if 'safe', why isn't default behaviour?
since there's no other answers question, decided use following - (nsurl *)urlvalue
method instead of - (nsurl *)urlwithstring:
safe measure:
- (nsurl *)urlvalue { nsurl *url = [nsurl urlwithstring:self]; if (url) return url; return [nsurl urlwithstring:[self stringbyaddingpercentescapesusingencoding:nsutf8stringencoding]]; }
Comments
Post a Comment