Подтвердить что ты не робот

Urldecode в objective-c

Я использую строку с urlencoded в objective-c. Есть ли функция основания, которая фактически отменяет urlENCODING?

Полученная строка похожа: K% FChlschrank, но должна быть после декодирования Kühlschrank

4b9b3361

Ответ 1

Я сделал быструю категорию, чтобы помочь решить эту проблему:)

@interface NSString (stringByDecodingURLFormat)
- (NSString *)stringByDecodingURLFormat;
@end

@implementation NSString
- (NSString *)stringByDecodingURLFormat
{
    NSString *result = [(NSString *)self stringByReplacingOccurrencesOfString:@"+" withString:@" "];
    result = [result stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    return result;
}
@end

После определения это быстро может обрабатывать закодированную строку:

NSString *decodedString = [myString stringByDecodingURLFormat];

Множество других способов реализации.

Ответ 2

Я считаю, что это то, что вы ищете:

- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

Возвращаемое значение:

Новая строка, сделанная путем замены в приемнике всех процентов, экранирует совпадающие символы, определенные данной кодировкой. Он возвращает nil, если преобразование невозможно, например, процентные escape-последовательности дают последовательность байтов, не легальную в кодировании.

[source: Apple NSString Class Reference]

Ответ 3

- (NSString *)URLDecode:(NSString *)stringToDecode
{
    NSString *result = [stringToDecode stringByReplacingOccurrencesOfString:@"+" withString:@" "];
    result = [result stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    return result;
}

Что он

Ответ 4

Согласно W3Schools, URL-адреса можно отправлять только через Интернет, используя набор символов ASCII. Для меня этот фрагмент кода работал:

NSString *original = @"K%FChlschrank";

NSString *result2 = [original stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

Ответ 5

Для решения parmanent на iOS 9 используйте пассивный код

NSURL* link = [NSURL URLWithString:[url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];