public static string UrlEncode(string s, Encoding Enc) { if (s == null) return null; if (s == String.Empty) return String.Empty; bool needEncode = false; int len = s.Length; for (int i = 0; i < len; i++) { char c = s[i]; if ((c < '0') || (c < 'A' && c > '9') || (c > 'Z' && c < 'a') || (c > 'z')) { if (MonoHttpEncoder.NotEncoded(c)) continue; needEncode = true; break; } } if (!needEncode) return s; // avoided GetByteCount call byte[] bytes = new byte[Enc.GetMaxByteCount(s.Length)]; int realLen = Enc.GetBytes(s, 0, s.Length, bytes, 0); return Encoding.ASCII.GetString(UrlEncodeToBytes(bytes, 0, realLen)); }
static MonoHttpEncoder() { #if NET_4_0 defaultEncoder = new Lazy <MonoHttpEncoder> (() => new MonoHttpEncoder()); currentEncoderLazy = new Lazy <MonoHttpEncoder> (new Func <MonoHttpEncoder> (GetCustomEncoderFromConfig)); #else defaultEncoder = new HttpEncoder(); currentEncoder = defaultEncoder; #endif }
public static byte[] UrlEncodeUnicodeToBytes(string str) { if (str == null) return null; if (str.Length == 0) return new byte[0]; MemoryStream result = new MemoryStream(str.Length); foreach (char c in str) { MonoHttpEncoder.UrlEncodeChar(c, result, true); } return result.ToArray(); }
static MonoHttpEncoder() { #if NET_4_0 defaultEncoder = new Lazy <MonoHttpEncoder> (() => new MonoHttpEncoder()); // NOTE: We explicitly removed this line, we use MonoHttpUtility to avoid config issues and App_Start probelms // and we only use this internally for our own stuff, we never want to allow this configuration, and it is // something that we can safely disable // new Lazy <MonoHttpEncoder> (new Func <MonoHttpEncoder> (GetCustomEncoderFromConfig)); currentEncoderLazy = defaultEncoder; #else defaultEncoder = new HttpEncoder(); currentEncoder = defaultEncoder; #endif }