C #은 JavaScript의 encodeURIComponent ()와 동등합니까?
자바 펼쳐에서 :
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 % 20 여기서 % 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.UrlEncode, Server.UrlDecode, Server.HtmlEncode 및 Server.HtmlDecode입니다.
편집 : 포스터는 웹 응용 프로그램이 아니라 웹 응용 프로그램이 아니라고 Windows 응용 프로그램이라고 생각합니다. 위에 추가 항목은 프로젝트에 대한 참조로 추가해야하는 System.Web의 HttpUtility 클래스에서 사용할 수 있습니다.
'IT' 카테고리의 다른 글
기본 Vim 색상 구성표를 설정하는 방법 (0) | 2020.07.09 |
---|---|
셔플 링에 JavaScript Array.sort () 메소드를 사용하는 것이 맞습니까? (0) | 2020.07.08 |
각도 양식 필드를 유효하지 않은 수동으로 설정해야합니까? (0) | 2020.07.08 |
Spring 3 RequestMapping : 경로 값 제공 (0) | 2020.07.08 |
iPhone 시뮬레이터에서 시간과 존재를 변경하는 방법은 무엇입니까? (0) | 2020.07.08 |