2015-07-22 101 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

stringByAddingPercentEscapesUsingEncoding URL編碼的問題已經討論了SO:

https://stackoverflow.com/a/8086845

總之,使用stringByAddingPercentEscapesUsingEncoding是一個壞主意,除非你不想要編碼斜槓和其他幾個字符(在某些情況下可能是這種情況)。相反,您應該使用Core Foundation的CFURLCreateStringByAddingPercentEscapes函數。查看上面的鏈接 - 它包含代碼示例和更詳細的解釋。