IT

C #은 JavaScript의 encodeURIComponent ()와 동등합니까?

lottoking 2020. 7. 8. 22:38
반응형

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.UrlEncodeURL의 일부인 노드를 이스케이프 처리하는 올바른 방법입니다.

예를 들어 거기를 보자 "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 클래스에서 사용할 수 있습니다.

참고 : https://stackoverflow.com/questions/86477/does-c-sharp-have-an-equivalent-to-javascripts-encodeuricomponent

반응형