&、?、/、。vb.netのURLにhtmlの特殊文字をエンコードしてエンコードする方法
中国語や日本語の文字を含め、残りの部分はそのまま残しておきます。それらはちょうど良い権利を得るために挿入することができますか?
言語は...このリンクはあなたを助けるかもしれないvb.net
&、?、/、。vb.netのURLにhtmlの特殊文字をエンコードしてエンコードする方法
中国語や日本語の文字を含め、残りの部分はそのまま残しておきます。それらはちょうど良い権利を得るために挿入することができますか?
言語は...このリンクはあなたを助けるかもしれないvb.net
ある http://dhanushkaat.blogspot.in/2012/01/only-encode-url-special-characters-in.html
これは、HTTPコンテキストで互換性を持たせるために文字列をエンコードする手間のかからない方法ですが、一部のシナリオではそのような特権を自動的には取得しません(Web以外のアプリケーションなど)。
VS 2010からSQL Serverユーザー定義関数を開発していたときにこのような状況に遭遇しました。 SQL CLRプロジェクトにアセンブリ参照を追加すると、その参照がGACからフェッチされるデータベースサーバに格納されます。 マイクロソフトでは、GACにT-SQL関数によって参照される安全なアセンブリとして識別されたアセンブリを追加し、これらのクラスで定義された機能を使用できるようにしました。しかし、残念ながら、System.Web.dllはその1つではありません。
だから、私たちがURLエンコーディングに使うことができるもう1つの機能は、System.Uri名前空間内にあります。これは幸いにもSystem.dll内にあります。
OK、URLの特殊文字のみをエンコードする方法 シンプルなだけで "正規表現"の力を使います。
ここに私が書いた機能があります。
private static string EncodeUrl(string toEncode)
{
const string pattern = "[$&+,/:;[email protected]]";
var match = Regex.Match(toEncode, pattern);
while(match.Success)
{
toEncode = toEncode.Replace(match.Value, Uri.EscapeDataString(match.Value));
match = Regex.Match(toEncode, pattern);
}
return toEncode;
}
この関数は、すべての特殊文字がそれぞれのエンコードされた値に置き換えられるまで、渡された文字列を繰り返しチェックします。
正規表現パターンで定義されている文字だけが置換されるように、Regex.Matchと文字列置換関数を組み合わせて使用します。
'HttpServerUtility.HtmlEncode'は必要に応じて機能しませんか? http://msdn.microsoft.com/en-us/library/w3te6wfz.aspx – rfmodulator