Почему в UIWebView возникают проблемы с & символами в URL (хочет &) - PullRequest
2 голосов
/ 30 сентября 2010

У меня проблема с UIWebView, который я использую в своем приложении для iPhone. Исходный код, показанный в UIWebView, содержит следующую разметку помимо многих других вещей:

<object width="150" height="121"><param name="movie" value="http://www.youtube.com/v/SOMEVIDEO&hl=de&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/SOMEVIDEO&hl=de&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="150" height="121"></embed></object>

UIWebView отказывается правильно отображать видео из-за знака '&' - в URL-адресе внедренного объекта: http://www.youtube.com/v/SOMEVIDEO&hl=de&fs=1

Если я заменю «&» на «&», все будет выглядеть так, как должно быть в UIWebView. Та же проблема возникает не только во встроенных видео, но и на обычных URL. Странно то, что Safari-App правильно отображает тот же веб-сайт, но не UIWebView в моем приложении. Я что-то упускаю здесь очевидное?

PS: UIWebView показывает сообщение об ошибке в верхней части страницы при попытке рендеринга с содержимым:

This page contains the following errors:
Error on line 102 at column 97: Entity Ref: expecting ';'
Below is a rendering of the page up to the first error.

Обновление для ясности:

Я использую этот запрос для загрузки контента:

[myWebView loadRequest:request];

Вот почему невозможно использовать метод -stringByAddingPercentEscapes в NSString, как предложил Jasarien. Это касается всего источника, а не отдельных URL.

1 Ответ

2 голосов
/ 30 сентября 2010

Это потому, что амперсанды должны быть закодированы в URL для работы в URL. То же самое касается пробелов и других типов символов.

Проверьте метод -stringByAddingPercentEscapes на NSString.

...