Кодировка URL с помощью NSCharcterSet - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть несколько видеофайлов и файлов изображений, хранящихся в каталоге приложений. Я использовал stringByAddingPercentEscapesUsingEncoding: для преобразования в допустимую строку URL-адреса.Так как он устарел, и мы должны использовать stringByAddingPercentEncodingWithAllowedCharacters: , я не могу получить правильный URL для загрузки PDF или воспроизведения видео.Я перепробовал все доступные NSCharacterSet.Это добавляет дополнительный% 252020 для пробела и создает проблему.

Использование stringByAddingPercentEscapesUsingEncoding

file: /// var / mobile / Containers / Data / Application / 1392B0FE-F998-45A4-A398-A3ACB47ECE26 / Library /Приватный% 20Documents / Sample% 20Image% 20To% 20Be% 20Loaded.jpg

Использование ** stringByAddingPercentEncodingWithAllowedCharacters **

file: /// var / mobile / Containers /Данные / Приложение / 1392B0FE-F998-45A4-A398-A3ACB47ECE26 / Библиотека / Частные% 2520Documents / Sample% 2520Image% 2520To% 2520Be% 2520Loaded.jpg

И это не может найти файл и, следовательно,не мог загрузить это.Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Вы получаете% 2520, когда ваш URL уже содержит% 20 и снова кодируется в URL, что преобразует% 20 в% 2520.% 255B - это то, что вы получаете, когда дважды кодируете квадратные скобки.

вы можете попробовать следующий код в пустом проекте:

NSString * str = @"/var/mobile/Containers/Data/Application/1392B0FE-F998-45A4-A398-A3ACB47ECE26/Library/Private Documents/Sample Image To Be Loaded.jpg";
NSString * encodedString = [str stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];
NSLog(@"encodedString = %@", encodedString);
NSString * encodedStringAgain = [encodedString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];
NSLog(@"encodedStringAgain = %@", encodedStringAgain);

Он печатает:

encodedString = /var/mobile/Containers/Data/Application/1392B0FE-F998-45A4-A398-A3ACB47ECE26/Library/Private%20Documents/Sample%20Image%20To%20Be%20Loaded.jpg

encodedStvar / mobile / Containers / Data / Application / 1392B0FE-F998-45A4-A398-A3ACB47ECE26 / Библиотека / Личные% 2520Documents / Sample% 2520Image% 2520To% 2520Be% 2520Loaded.jpg

Все, что вам нужноdo в вашем коде:

NSURL *urlToLoad = [NSURL fileURLWithPath: fullPath];

с fullPath исходной строкой без какой-либо кодировки.

0 голосов
/ 25 сентября 2018

Вы можете использовать

NSString * encodedString = [@"stringURl to encode" stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...