URI文字列をエスケープするには、
Uri.EscapeUriString() または Uri.EscapeDataString() を使用します。
違いは以下の通りです。
Uri.EscapeUriString():URIの予約文字(:/&? 等)以外のみエスケープする
Uri.EscapeDataString():指定したすべての文字をエスケープする
サンプル
例1)URI文字列の必要な箇所のみエスケープする
//URI文字列をエスケープする
string eStr = Uri.EscapeUriString("http://hoge.hoge?aa=あいう");
Console.WriteLine(eStr);
結果
http://hoge.hoge?aa=%E3%81%82%E3%81%84%E3%81%86
「:」や「/」などの文字はエスケープされません。
例2)文字列の全てをエスケープする
//URI文字列をエスケープする
string eStr = Uri.EscapeDataString("http://hoge.hoge?aa=あいう");
Console.WriteLine(eStr);
結果
http%3A%2F%2Fhoge.hoge%3Faa%3D%E3%81%82%E3%81%84%E3%81%86
「:」や「/」などの文字も全てエスケープされます。
備考
- httpで始まるURIをエスケープする場合は、Uri.EscapeUriStringをご使用ください。
- クエリ部分のみをエスケープする場合は、Uri.EscapeDataStringをご使用ください。