строка NSURL в формате какао для фида атомов gmail - PullRequest
1 голос
/ 03 ноября 2011

Я пытаюсь отформатировать строку URL для получения фида атомов gmail, но у меня проблемы с этим. Вот мой код:

NSString *urlstring = [NSString stringWithFormat:@"https://%@:%@@gmail.google.com/­gmail/­feed/atom", username, userpass];
NSString *encodedString = [urlstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:encodedString];

Вот что у меня в журнале.

https://••••••••@gmail.com:•••••••••@gmail.google.com/%C2%ADgmail/%C2%ADfeed/atom

Это ->% C2% AD, кажется, проблема. Это просто слеш. Есть идеи, как это убрать? Спасибо.

1 Ответ

2 голосов
/ 04 ноября 2011

Краткий ответ:

Ваш urlstring содержит мягкие дефисы.

Полный ответ:

В следующем коде withSoftHyphens и withoutSoftHyphens выглядят одинаково:

NSString *withSoftHyphens    = @"example/­example/­example";
NSString *withoutSoftHyphens = @"example/example/example";

NSLog(@"%@",[withSoftHyphens    stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);
NSLog(@"%@",[withoutSoftHyphens stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);

Однако вывод отличается:
(проверьте себя, скопировав и выполнив приведенный выше код)

"example/%C2%ADexample/%C2%ADexample"
"example/example/example"

Мягкие дефисы в основном представлены %C2%AD после кодирования строки.

Цитата из Википедии:

Мягкий дефис - это тип используемого дефисауказать место в тексте, где допускается разрыв через дефис без принудительного разрыва строки в неудобном месте, если текст перетекает.

Другими словами, ваш urlstring содержит мягкие дефисы.
Просто удалите /­g и /­f, используя клавишу Backspace, и введите их снова.
Обратите внимание, что на самом деле вам нужно ТРИ Backspace, чтобы удалить только два символа (/­g).
- Первый Backspace удаляетg.
- Второй забой удаляет невидимый мягкийt дефис.
- Третье возвращение удаляет /.

В заключение, ваш код работает очень хорошо после удаления мягких дефисов:

NSString *username = @"Anne";
NSString *userpass = @"Password";
NSString *urlstring = [NSString stringWithFormat:@"https://%@:%@@gmail.google.com/mail/feed/atom", username, userpass];
NSString *encodedString = [urlstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:encodedString];
NSLog(@"%@", url);

Вывод:

https://Anne:Password@gmail.google.com/mail/feed/atom
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...