자바 스크립트에서 :
encodeURIComponent("©√") == "%C2%A9%E2%88%9A"
C # 응용 프로그램과 동등한 기능이 있습니까? HTML 문자를 이스케이프 처리하기 위해 사용했습니다.
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"&#" + ((int)m.Value[0]).ToString() + ";");
그러나 JS가 사용하는 올바른 16 진수 형식으로 일치를 변환하는 방법을 잘 모르겠습니다. 예를 들어이 코드는 다음과 같습니다.
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));
대신에 ” %a9%221a"
을 ( "©√"
를) 반환합니다 "%C2%A9%E2%88%9A"
. 문자열을 바이트 또는 다른 것으로 분할해야하는 것 같습니다.
편집 : 이것은 윈도우 앱이다에서 사용할 수있는 유일한 항목 System.Web
:있다 AspNetHostingPermission
, AspNetHostingPermissionAttribute
하고 AspNetHostingPermissionLevel
.
답변
Uri.EscapeDataString
또는 HttpUtility.UrlEncode
URL의 일부인 문자열을 이스케이프 처리하는 올바른 방법입니다.
예를 들어 문자열을 보자 "Stack Overflow"
.
-
HttpUtility.UrlEncode("Stack Overflow")
->"Stack+Overflow"
-
Uri.EscapeUriString("Stack Overflow")
->"Stack%20Overflow"
-
Uri.EscapeDataString("Stack + Overflow")
-> 또한 인코딩"+" to "%2b"
—->Stack%20%2B%20%20Overflow
URL의 실제 부분으로 사용될 때 마지막 문자열 만 정확합니다 (쿼리 문자열 매개 변수 중 하나의 값이 아닌)
답변
HttpUtility.HtmlEncode
/ 디코딩
HttpUtility.UrlEncode
/ 디코딩
System.Web
프로젝트에서 사용할 수없는 어셈블리 에 대한 참조를 추가 할 수 있습니다
답변
나는 C #을 위해 javascript의 encodeURIComponent와 완벽하게 호환되는 아날로그를 시도했지만 4 시간 동안 실험 한 후에 이것을 발견했다.
C # 코드 :
string a = "!@#$%^&*()_+ some text here али мамедов баку";
a = System.Web.HttpUtility.UrlEncode(a);
a = a.Replace("+", "%20");
결과 :
! % 40 % 23 % 24 % 25 % 5e % 26 * () _ % 2b % 20some % 20text % 20here % 20 % d0 % b0 % d0 % bb % d0 % b8 % 20 % d0 % bc % d0 % b0 % d0 % bc % d0 % b5 % d0 % b4 % d0 % be % d0 % b2 % 20 % d0 % b1 % d0 % b0 % d0 % ba % d1 % 83
Javascript의 decodeURLComponent ()로 디코딩 한 후;
당신은 이것을 얻을 것입니다 :
! @ # $ % ^ & * () _ + 여기에 일부 텍스트 али мамедов баку
관심을 가져 주셔서 감사합니다
답변
System.Uri.EscapeUriString ()은 아무것도하지 않는 것 같지만 System.Uri.Escape Data String ()은 저에게 효과적 이었습니다.
답변
객체에 액세스 할 수없는 경우 Server.UrlEncode()
또는 예 System.Web.HttpUtility.UrlEncode()
를 들어 보십시오 Server
. 어셈블리에 System.Uri.EscapeUriString()
참조를 추가하지 않도록 사용할 수도 있습니다 System.Web
.
답변
Windows 스토어 앱의 경우 HttpUtility가 없습니다. 대신, 당신은 :
URI의 경우 ‘?’앞 :
- 체계. Uri.EscapeUriString ( “example.com/Stack Overflow ++?”)
- -> “example.com/Stack%20Overflow++?”
‘?’다음에 오는 URI 쿼리 이름 또는 값의 경우 :
- 체계. Uri.EscapeDataString ( “스택 오버플로 ++”)
- -> “스택 % 20 오버플로 % 2B % 2B”
A의 x-www-form-urlencoded를 게시물 내용의 쿼리 이름 또는 값 :
- System.Net. WebUtility.UrlEncode ( “스택 오버플로 ++”)
- -> “스택 + 오버플로 % 2B % 2B”
답변
System.Web 네임 스페이스에서 Server 개체를 사용할 수 있습니다.
Server.UrlEncode, Server.UrlDecode, Server.HtmlEncode 및 Server.HtmlDecode.
편집 : 포스터는 이것이 웹 응용 프로그램이 아니라 웹 응용 프로그램이 아니라고 Windows 응용 프로그램이라고 덧붙였습니다. 위에 나열된 항목은 프로젝트에 대한 참조로 추가해야하는 System.Web의 HttpUtility 클래스에서 사용할 수 있습니다.