2012-03-01 20 views
3

&、?、/、。vb.netのURLにhtmlの特殊文字をエンコードしてエンコードする方法

中国語や日本語の文字を含め、残りの部分はそのまま残しておきます。それらはちょうど良い権利を得るために挿入することができますか?

言語は...このリンクはあなたを助けるかもしれないvb.net

+0

'HttpServerUtility.HtmlEncode'は必要に応じて機能しませんか? http://msdn.microsoft.com/en-us/library/w3te6wfz.aspx – rfmodulator

答えて

3

ある http://dhanushkaat.blogspot.in/2012/01/only-encode-url-special-characters-in.html



編集:それは特殊文字をエンコードするために来るとき
:私は、下記のリンクの内容を追加しました
URLを参照して、System.Web.dllアセンブリ内で定義されている関数を簡単に使用できます。

これは、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と文字列置換関数を組み合わせて使用​​します。

関連する問題