.Net 4.5 이상에서 WebUtility
형식화를 위해 이것을 답변으로 제출하고 있습니다.
그것들을 비교하는 좋은 예를 찾지 못했습니다 :
string testString = "http://test# space 123/text?var=val&another=two";
Console.WriteLine("UrlEncode: " + System.Web.HttpUtility.UrlEncode(testString));
Console.WriteLine("EscapeUriString: " + Uri.EscapeUriString(testString));
Console.WriteLine("EscapeDataString: " + Uri.EscapeDataString(testString));
Console.WriteLine("EscapeDataReplace: " + Uri.EscapeDataString(testString).Replace("%20", "+"));
Console.WriteLine("HtmlEncode: " + System.Web.HttpUtility.HtmlEncode(testString));
Console.WriteLine("UrlPathEncode: " + System.Web.HttpUtility.UrlPathEncode(testString));
//.Net 4.0+
Console.WriteLine("WebUtility.HtmlEncode: " + WebUtility.HtmlEncode(testString));
//.Net 4.5+
Console.WriteLine("WebUtility.UrlEncode: " + WebUtility.UrlEncode(testString));
출력 :
UrlEncode: http%3a%2f%2ftest%23+space+123%2ftext%3fvar%3dval%26another%3dtwo
EscapeUriString: http://test#%20space%20123/text?var=val&another=two
EscapeDataString: http%3A%2F%2Ftest%23%20space%20123%2Ftext%3Fvar%3Dval%26another%3Dtwo
EscapeDataReplace: http%3A%2F%2Ftest%23+space+123%2Ftext%3Fvar%3Dval%26another%3Dtwo
HtmlEncode: http://test# space 123/text?var=val&another=two
UrlPathEncode: http://test#%20space%20123/text?var=val&another=two
//.Net 4.0+
WebUtility.HtmlEncode: http://test# space 123/text?var=val&another=two
//.Net 4.5+
WebUtility.UrlEncode: http%3A%2F%2Ftest%23+space+123%2Ftext%3Fvar%3Dval%26another%3Dtwo
.Net 4.5 이상에서 WebUtility
.UrlEncode
HttpUtility.UrlEncode
보다 일반적인 문자에 대해서는 v4.0 이전 버전 으로 복제 된 것으로 보입니다 .
Uri.EscapeDataString(testString).Replace("%20", "+").Replace("'", "%27").Replace("~", "%7E")
참고 : EscapeUriString
유효한 URI 문자열을 유지하여 가능한 많은 일반 텍스트 문자를 사용합니다.
다양한 인코딩을 비교 한 표는 다음 답변을 참조하십시오.
https://stackoverflow.com/a/11236038/555798
줄 바꿈은
그들 모두가 (이 아닌 여기에 나열된 HttpUtility.HtmlEncode
변환합니다) "\n\r"
에 %0a%0d
나%0A%0D
자유롭게 편집하고 테스트 문자열에 새 문자를 추가하거나 주석에 남겨두면 편집하겠습니다.