2015-07-22 2 views
0

Я пытаюсь кодировать специальные символы. Это не работает для всех. Я запрашиваю URL, который содержит имя и адрес. Прежде чем запрашивать, я кодирую URL, но некоторые специальные символы не кодируются процентом.Не кодирование какого-либо специального символа iOS

NSString *encodedString = [urlAsString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

url = [[NSURL alloc ] initWithString:encodedString]; 

Заранее спасибо.

+0

Не могли бы вы привести пример urlAsString, где кодировка не работает? – ZeMoon

+1

Какие специальные символы? – Sujay

+0

http: // sample/app/InsertCustomer/name /% 2316th% 20main && *. Текст адреса содержит # 16th main && *. – VJVJ

ответ

0

попробуйте этот. У меня была аналогичная проблема, и это помогло:

- (NSString *) URLEncodedString { 
    NSMutableString * output = [NSMutableString string]; 
    const char * source = [self UTF8String]; 
    int sourceLen = strlen(source); 
    for (int i = 0; i < sourceLen; ++i) { 
     const unsigned char thisChar = (const unsigned char)source[i]; 
     if (false && thisChar == ' '){ 
      [output appendString:@"+"]; 
     } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' || 
        (thisChar >= 'a' && thisChar <= 'z') || 
        (thisChar >= 'A' && thisChar <= 'Z') || 
        (thisChar >= '0' && thisChar <= '9')) { 
      [output appendFormat:@"%c", thisChar]; 
     } else { 
      [output appendFormat:@"%%%02X", thisChar]; 
     } 
    } 
    return output; 
} 
0

Проблема кодирования URL с stringByAddingPercentEscapesUsingEncoding уже обсуждается СЦ:

https://stackoverflow.com/a/8086845

Короче говоря, с помощью stringByAddingPercentEscapesUsingEncoding это плохая идея, если вы не хотите кодировать косые черты и несколько других символов (что может иметь место в некоторых сценариях). Вместо этого вы должны использовать функцию CFURLCreateStringByAddingPercentEscapes из Core Foundation. Проверьте ссылку выше - она ​​содержит примеры кода и более подробные объяснения.

Смежные вопросы