NSURL путь не понимает знак плюс в URL - PullRequest
0 голосов
/ 10 ноября 2009

Как вы знаете, знак плюса в URL переводится в пробел. [NSURL path] возвращает путь, заменяя все% xx соответствующими символами. Но это не переводит «+» в пробел! Это оставляет это как знак плюс. Это ошибка или что? Как я могу использовать NSURL для работы с URL, которые содержат пробелы, закодированные как плюсы?

спасибо

Ответы [ 3 ]

2 голосов
/ 10 ноября 2009

Любая эквивалентность между + и пробелом происходит на сервере, а не на клиенте. Если вы хотите перевести знаки плюс в пробелы в клиентской программе (я полагаю, у вас есть причина), вам придется сделать это самостоятельно - до , не покидая% xx.

И вы сделаете это на стороне NSString, а не на стороне NSURL.

0 голосов
/ 10 ноября 2009

Q: Это ошибка или что?

A: нет, это особенность, и было бы ошибкой, если бы она была переведена в пробел, потому что плюс зарезервирован для интерпретации как пробел на serverside .

В: Как я могу использовать NSURL для работы с URL, которые содержат пробелы, закодированные как плюсы?

A: Оставьте их как есть. Сервер сделает все остальное.

0 голосов
/ 10 ноября 2009

Как указано в RFC 2396 (унифицированный идентификатор ресурса)

Многие URI включают компоненты состоящий из или разделенный определенным специальные символы. Эти персонажи называются "зарезервированными", так как их использование в компоненте URI ограничено их зарезервированной целью. Если данные для компонента URI будут конфликтовать с зарезервированным цель, то противоречивые данные должен быть экранирован до формирования URI.

  reserved    = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
                "$" | ","

Так что я думаю, что вы должны экранировать знак плюс в строке URL, прежде чем обращаться в NSURL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...