문제
일반적으로 난 사용:
HttpContext.Current.Server.UrlEncode("url");
하지만 이것은 콘솔 응용 프로그램 HttpContext.Current
은 항상 null
.
이 있는 다른 방법은 동일한 것을 사용할 수 있는?
해결책
이 시도!
Uri.EscapeUriString(url);
나
Uri.EscapeDataString(data)
아 참조해야 하는 시스템입니다.웹.
편집: 참조하십시오 또 다른 그래서 대답에 대한 더 많은...
다른 팁
나는 아닙니다.NET 사람이다,그러나,당신은 할 수 없습니다 사용:
HttpUtility.UrlEncode Method (String)
는 여기서 설명:
코드에서 이안 홉킨스지 않음을 추가하지 않고도 참조하는 시스템입니다.웹.여기에 포트 C#하지 않은 사람들을 위해 사용 VB.NET:
/// <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));
}
}
당신이 사용하고 싶
System.Web.HttpUtility.urlencode("url")
는지 확인 당신이 시스템입니다.웹 중 하나로 프로젝트에서 참조.나는 생각하지 않으로 포함되어 있 참조에 의해서 기본적으로 콘솔 응용 프로그램.
사용하십시오 UrlEncode 방법에 HttpUtility 클래스입니다.
내가 달렸으로 이 문제를 신고보다는 추가 시스템입니다.웹 어셈블리 나의 프로젝트가 등을 위한 인코딩/디코딩 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
사 WebUtility.UrlEncode(string)
서 System.Net
네임스페이스
Kibbee 제공하는 실제 대답이다.Yes,HttpUtility.UrlEncode 은 오른쪽 방법을 사용하지만을 기본적으로 사용할 수 있 콘솔 응용 프로그램입니다.당신 야 참조를 추가하는 시스템입니다.웹.지
- 에서 당신의 솔루션 탐색기에서 오른쪽 클릭하여 참조
- 선택하"추가 기준"
- 에서"추가"를 참조 대화 상자를 사용하여.NET 탭
- 아래로 스크롤하는 시스템입니다.웹사를 선택하는 것,그리고 확인을 누르십시오
지금 사용할 수 있습니다 UrlEncode 방법입니다.당신은 여전히 추가하려면,
사용하는 시스템입니다.웹사
의 맨 위에 콘솔 응용 프로그램 또는 전체를 사용할 때 네임스페이스 메소드를 호출,
시스템입니다.웹.HttpUtility.UrlEncode(someString)
HttpUtility.UrlEncode("url")의 시스템입니다.웹.
를 사용하여 정적 HttpUtility.UrlEncode 방법입니다.
최고의 것을 추가하는 것이 참조하여 System.web..dll
고 사용 var EncodedUrl=시스템입니다.웹.HttpUtility.UrlEncode("URL_TEXT");
당신을 찾을 수 있습니다에서 파일 System.web.dll
Uri.EscapeUriString 사용할 수 없습 탈출을 위해 문자열을 전달되는 URL 하지 않는 인코딩으로 모든 문자를 기대할 수 있습니다.에'+'좋은 예지 않은 탈출했다.그런 다음 이로 변환되는 공간에서 URL 이 때문에 그것이 무엇을 의미에서 간단한 URI.분명히 그 원인이 대규모 문제 분 당신이 시도하고 통과 같은 기본 64 로 인코딩된 문자열에는 URL 공간을 통해 모두 표시 문자열을 책임지지 않습니다.
당신이 사용할 수 있습 HttpUtility.UrlEncode 추가 필요한 참조하여 귀하의 프로젝트(너와 통신하는 웹 응용 프로그램을 다음을 이유가 없는 이렇게 해서는 안 됩).
또한 사용을 Uri.EscapeDataString 통해 Uri.EscapeUriString 설명했듯이 여기에 아주 잘: https://stackoverflow.com/a/34189188/7391