C#은 JavaScript 인코딩과 동등합니까?URIComponent()?
JavaScript의 경우:
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"
문자열을 바이트 단위로 분할해야 할 것 같습니다.
편집: 이것은 Windows 앱용이며, 이 앱에서 사용할 수 있는 유일한 항목입니다.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
프로젝트에서 사용할 수 없는 경우 어셈블리
javascript 인코딩의 완전한 호환성을 위해 노력했습니다.c#의 URIComponent와 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%d0%d0%bb8%d0%d0%d0%bc%d0%d0%d0%b%d0%d0%d0%d0%d0%d0%d0%d0%d0%d0%d%%d%d%d%%d%%%%%%d%%d0%d%d%d%d%%%d0%%d%d%d2%%%%%%%
Javascript의 디코딩으로 디코딩한 후URL 구성 요소();
다음과 같이 됩니다:!@#$%^&*()_+ 여기 텍스트가 있습니다.
경청해 주셔서 감사합니다.
System.Uri.EscapeUriString()은 아무것도 하지 않은 것 같습니다만, 시스템입니다.URI.EscapeDataString()이 작동했습니다.
해라Server.UrlEncode()
, 또는System.Web.HttpUtility.UrlEncode()
예를 들어, 에 액세스 할 수 없는 경우Server
물건.를 사용할 수도 있습니다.System.Uri.EscapeUriString()
참조가 추가되는 것을 피하기 위해System.Web
어셈블리
Windows Store 앱의 경우 HttpUtility를 사용할 수 없습니다.대신 다음과 같은 이점이 있습니다.
URI의 경우 '?' 앞:
- System.Uri.EscapeUriString("example.com/Stack Overflow++?")
- -> "example.com/Stack%20Overflow++?"
URI 쿼리 이름 또는 값의 경우 '?' 뒤에:
- System.Uri.Escape Data String("스택 오버플로우++")
- -> "스택%20오버플로우%2B%2B"
x-www-form-urlencoded 쿼리 이름 또는 값의 경우 POST 내용:
- System.Net.Web Utility.UrlEncode("스택 오버플로우++")
- -> "스택+오버플로우%2B%2B"
시스템에서 Server 개체를 사용할 수 있습니다.웹 네임스페이스
Server.UrlEncode, Server.UrlDecode, 서버.HtmlEncode 및 서버.HtmlDecode.
편집: 포스터는 윈도 어플리케이션이며 웹 어플리케이션이 아니라고 덧붙였습니다.위의 항목은 시스템 내의 HttpUtility 클래스에서 사용할 수 있습니다.프로젝트에 대한 참조로 추가해야 하는 웹입니다.
언급URL : https://stackoverflow.com/questions/86477/does-c-sharp-have-an-equivalent-to-javascripts-encodeuricomponent
'sourcecode' 카테고리의 다른 글
XAML에서 이미지 리소스를 참조하는 방법 (0) | 2023.04.14 |
---|---|
Objective-C에서 문자열이 비어 있는지 테스트하려면 어떻게 해야 합니까? (0) | 2023.04.14 |
다운스트림과 업스트림의 정의 (0) | 2023.04.14 |
Bash에서 'for' 루프를 어떻게 쓰죠? (0) | 2023.04.14 |
Dapper ORM을 사용하여 * FROM X WHERE ID IN (...)를 선택합니다. (0) | 2023.04.14 |