@@ -29,10 +29,15 @@ int _OFString_URLEncoding_reference; @implementation OFString (URLEncoding) - (OFString*)stringByURLEncoding { + return [self stringByURLEncodingWithIgnoredCharacters: ""]; +} + +- (OFString*)stringByURLEncodingWithIgnoredCharacters: (const char*)ignored +{ void *pool = objc_autoreleasePoolPush(); const char *string = [self UTF8String]; char *retCString; size_t i; OFString *ret; @@ -53,11 +58,12 @@ * make sure it's always interpreted correctly. */ if (!(*string & 0x80) && (isalnum((int)*string) || *string == '$' || *string == '-' || *string == '_' || *string == '.' || *string == '!' || *string == '*' || - *string == '(' || *string == ')' || *string == ',')) + *string == '(' || *string == ')' || *string == ',' || + strchr(ignored, *string) != NULL)) retCString[i++] = *string; else { uint8_t high, low; high = *string >> 4;