62

通常、私はただ使用します:

HttpContext.Current.Server.UrlEncode("url");

ただし、これはコンソール アプリケーションでHttpContext.Currentあるため、常にnull.

私が使用できる同じことを行う別の方法はありますか?

4

12 に答える 12

80

これを試して!

Uri.EscapeUriString(url);

または

Uri.EscapeDataString(data)

System.Web を参照する必要はありません。

編集:詳細については、別のSO回答を参照してください...

于 2012-01-19T18:41:57.590 に答える
71

私は.NETの人ではありませんが、使用できません:

HttpUtility.UrlEncode Method (String)

ここで説明されているもの:

MSDN の HttpUtility.UrlEncode メソッド (文字列)

于 2008-08-18T14:51:06.503 に答える
13

Ian Hopkinsのコードは、System.Webへの参照を追加しなくても、私に代わってトリックを実行します。VB.NETを使用していない人のためのC#への移植は次のとおりです。

/// <summary>
/// URL encoding class.  Note: use at your own risk.
/// Written by: Ian Hopkins (http://www.lucidhelix.com)
/// Date: 2008-Dec-23
/// (Ported to C# by t3rse (http://www.t3rse.com))
/// </summary>
public class UrlHelper
{
    public static string Encode(string str) {
        var charClass = String.Format("0-9a-zA-Z{0}", Regex.Escape("-_.!~*'()"));
        return Regex.Replace(str, 
            String.Format("[^{0}]", charClass),
            new MatchEvaluator(EncodeEvaluator));
    }

    public static string EncodeEvaluator(Match match)
    {
        return (match.Value == " ")?"+" : String.Format("%{0:X2}", Convert.ToInt32(match.Value[0]));
    }

    public static string DecodeEvaluator(Match match) {
        return Convert.ToChar(int.Parse(match.Value.Substring(1), System.Globalization.NumberStyles.HexNumber)).ToString();
    }

    public static string Decode(string str) 
    {
        return Regex.Replace(str.Replace('+', ' '), "%[0-9a-zA-Z][0-9a-zA-Z]", new MatchEvaluator(DecodeEvaluator));
    }
}
于 2010-10-24T01:25:40.773 に答える
6

使いたくなる

System.Web.HttpUtility.urlencode("url")

プロジェクトの参照の 1 つとして system.web があることを確認してください。コンソール アプリケーションにデフォルトでリファレンスとして含まれているとは思いません。

于 2008-08-18T14:53:21.990 に答える
6

名前空間WebUtility.UrlEncode(string)から使用System.Net

于 2016-01-29T20:08:46.363 に答える
4

HttpUtility クラスで UrlEncode メソッドを使用してみてください。

  1. http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx
于 2008-08-18T14:50:38.127 に答える
3

私は自分でこの問題に遭遇し、System.Web アセンブリをプロジェクトに追加するのではなく、URL をエンコード/デコードするためのクラスを作成しました (非常に単純で、いくつかのテストを行いましたが、それほど多くはありません)。以下にソースコードを含めました。お願い: これを再利用する場合はコメントを一番上に残してください。壊れても私を責めないでください。コードから学んでください。

''' <summary>
''' URL encoding class.  Note: use at your own risk.
''' Written by: Ian Hopkins (http://www.lucidhelix.com)
''' Date: 2008-Dec-23
''' </summary>
Public Class UrlHelper
    Public Shared Function Encode(ByVal str As String) As String
        Dim charClass = String.Format("0-9a-zA-Z{0}", Regex.Escape("-_.!~*'()"))
        Dim pattern = String.Format("[^{0}]", charClass)
        Dim evaluator As New MatchEvaluator(AddressOf EncodeEvaluator)

        ' replace the encoded characters
        Return Regex.Replace(str, pattern, evaluator)
    End Function

    Private Shared Function EncodeEvaluator(ByVal match As Match) As String
    ' Replace the " "s with "+"s
        If (match.Value = " ") Then
            Return "+"
        End If
        Return String.Format("%{0:X2}", Convert.ToInt32(match.Value.Chars(0)))
    End Function

    Public Shared Function Decode(ByVal str As String) As String
        Dim evaluator As New MatchEvaluator(AddressOf DecodeEvaluator)

        ' Replace the "+"s with " "s
        str = str.Replace("+"c, " "c)

        ' Replace the encoded characters
        Return Regex.Replace(str, "%[0-9a-zA-Z][0-9a-zA-Z]", evaluator)
    End Function

    Private Shared Function DecodeEvaluator(ByVal match As Match) As String
        Return "" + Convert.ToChar(Integer.Parse(match.Value.Substring(1), System.Globalization.NumberStyles.HexNumber))
    End Function
End Class
于 2008-12-24T02:43:34.920 に答える
2

Kibbeeが本当の答えを提供します。はい、HttpUtility.UrlEncodeは使用するのに適切なメソッドですが、コンソールアプリケーションではデフォルトで使用できません。System.Webへの参照を追加する必要があります。そのためには、

  1. ソリューションエクスプローラーで、参照を右クリックします
  2. 「参照の追加」を選択します
  3. [参照の追加]ダイアログボックスで、[。NET]タブを使用します
  4. System.Webまで下にスクロールし、それを選択して、[OK]をクリックします。

これで、UrlEncodeメソッドを使用できます。あなたはまだ追加したいと思うでしょう、

System.Webを使用する

コンソールアプリの上部で、またはメソッドを呼び出すときに完全な名前空間を使用します。

System.Web.HttpUtility.UrlEncode(someString)

于 2009-03-16T15:08:21.527 に答える
1

System.Web の HttpUtility.UrlEncode("url")。

于 2008-08-18T14:51:37.173 に答える
1

静的 HttpUtility.UrlEncode メソッドを使用します。

于 2008-08-18T14:52:08.640 に答える
0

最善の方法は、System.web..dll への参照を追加することです。

var EncodedUrl=System.Web.HttpUtility.UrlEncode("URL_TEXT"); を使用します。

ファイルはSystem.web.dllにあります。

于 2016-08-02T06:16:19.097 に答える