//
static bool NeedToEscapeDataChar (char b)
{
-#if NET_4_0
- // .NET 4.0 follows RFC 3986 Unreserved Characters
- return !((b >= 'A' && b <= 'Z') ||
- (b >= 'a' && b <= 'z') ||
- (b >= '0' && b <= '9') ||
- b == '-' || b == '.' || b == '_' || b == '~');
-#else
+ if (IriParsing) {
+ // .NET 4.0 follows RFC 3986 Unreserved Characters
+ return !((b >= 'A' && b <= 'Z') ||
+ (b >= 'a' && b <= 'z') ||
+ (b >= '0' && b <= '9') ||
+ b == '-' || b == '.' || b == '_' || b == '~');
+ }
+
return !((b >= 'A' && b <= 'Z') ||
(b >= 'a' && b <= 'z') ||
(b >= '0' && b <= '9') ||
b == '_' || b == '~' || b == '!' || b == '\'' ||
b == '(' || b == ')' || b == '*' || b == '-' || b == '.');
-#endif
}
public static string EscapeDataString (string stringToEscape)
if ((b >= 'A' && b <= 'Z') || (b >= 'a' && b <= 'z') || (b >= '&' && b <= ';'))
return false;
- switch (b) {
- case '!':
- case '#':
- case '$':
- case '=':
- case '?':
- case '@':
- case '_':
- case '~':
+ if ("!#$=?@_~".IndexOf(b) != -1)
+ return false;
+
#if NET_4_0
- // .NET 4.0 follows RFC 3986
- case '[':
- case ']':
+ if ("[]".IndexOf(b) != -1)
+ return !IriParsing;
#endif
- return false;
- default:
- return true;
- }
+ return true;
}
public static string EscapeUriString (string stringToEscape)