C#でURL(RFC 1738)標準を使用して文字列をエンコードするにはどうすればよいですか?
次のオンラインツールは、この標準を使用して文字列を変換しています http://www.freeformatter.com/url-encoder.html
変換する文字列の例はtest(brackets)
で、エンコードされた文字列は次のようになります。
test%28brackets%29
RFC 1738 によると:
Thus, only alphanumerics, the special characters "$-_.+!*'(),", and reserved characters used for their reserved purposes may be used unencoded within a URL.
標準では括弧HttpUtility.UrlEncode
をエンコードせずに使用できると規定されているため、 WebUtility.UrlEncode
も ()
もこれらの文字をエンコードしません。
リンクされた RL Encoder/Decoder がそれらをエンコードする理由はわかりません。URLで使用できる文字としてもリストされているためです。
Uri.EscapeDataString
はあなたが望むことをします。 [〜#〜] msdn [〜#〜] を参照してください。
Uri.EscapeDataString
は、Uri標準を使用して文字列を変換しますが、これはRFC 1738に準拠していません。
RFC 1738は古いURL標準です。FormUrlEncodedContent
を使用してそれを達成しました:
data = new List<KeyValuePair<string, string>>();
data.Add(new KeyValuePair<string, string>("key", "value"));
var payloadBody = await new FormUrlEncodedContent(data).ReadAsStringAsync();
エンコードされたURLbodyが必要ない場合は、キー/値f.e.値を空にします。