C#を使用して文字列をURLにしたい。 .NETフレームワークには何か役立つものがあるはずですよね?
HttpServerUtility.UrlEncode を探していると思います。
System.Web.HttpUtility.UrlEncode(string url)
これを行う別の方法は、 Uri.EscapeUriString(stringToEscape)
を使用することです。
便利なSystem.Web.HttpUtility.UrlPathEncode(string str);
が見つかりました
スペースを+ではなく%20に置き換えます。
スペースとその他の特殊文字を適切にエスケープするには、 System.Uri.EscapeDataString(string stringToEscape)
を使用します。
承認されたストーリーについてコメントしたように、 HttpServerUtility.UrlEncode メソッドはスペースを%20ではなく+に置き換えます。代わりに、次の2つの方法のいずれかを使用します。 ri.EscapeUriString() または ri.EscapeDataString()
サンプルコード:
HttpUtility.UrlEncode("https://mywebsite.com/api/get me this file.jpg")
//"https%3a%2f%2fmywebsite.com%2fapi%2fget+me+this+file.jpg"
Uri.EscapeUriString("https://mywebsite.com/api/get me this file.jpg");
//"https://mywebsite.com/api/get%20me%20this%20file.jpg"
Uri.EscapeDataString("https://mywebsite.com/api/get me this file.jpg");
//"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%20me%20this%20file.jpg"
//When your url has a query string:
Uri.EscapeUriString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg");
//"https://mywebsite.com/api/get?id=123&name=get%20me%20this%20file.jpg"
Uri.EscapeDataString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg");
//"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%3Fid%3D123%26name%3Dget%20me%20this%20file.jpg"
つかいます - HttpServerUtility.UrlEncode
私もこれを行う必要があり、何年も前からこの質問を見つけましたが、質問のタイトルとテキストが完全に一致せず、Uri.EscapeDataString
またはUrlEncode
(これを使用しないでください!)は、URLをパラメーターとして他のURLに渡すことについて話さない限り、通常意味をなしません。
(たとえば、オープンID認証、Azure ADなどを行うときにコールバックURLを渡す)
これが質問に対するより実用的な答えであることを願っています:C#を使用して文字列をURLにしたいのですが、.NETフレームワークには何か役立つはずです?
はい-C#でURL文字列を作成するには2つの関数が役立ちます
String.Format
URLのフォーマット用Uri.EscapeDataString
URLのパラメーターをエスケープするためこのコード
String.Format("https://site/app/?q={0}&redirectUrl={1}",
Uri.EscapeDataString("search for cats"),
Uri.EscapeDataString("https://mysite/myapp/?state=from idp"))
この結果を生成します
https://site/app/?q=search%20for%20cats&redirectUrl=https%3A%2F%2Fmysite%2Fmyapp
ブラウザのアドレスバー、HTML src
タグのA
属性に安全にコピーして貼り付けるか、curl
で使用するか、QRコードにエンコードできます。等.