2014-02-25 1 views
8

C#에서 URL (RFC 1738) 표준을 사용하여 문자열을 인코딩하는 방법은 무엇입니까?C#에서 URL 인코딩 코드를 사용하는 방법

다음 온라인 도구는 내가 변환 할 문자열이 표준 http://www.freeformatter.com/url-encoder.html

예를 사용하여 문자열을 test(brackets)되고 변환되고 인코딩 된 문자열이 보일 것 같은 :

test%28brackets%29 
+0

[C#을 사용한 URL 인코딩] 가능한 복제본 (https://stackoverflow.com/questions/575440/url-encoding-using-c-sharp) –

답변

5

RFC 1738에 따르면 :

Thus, only alphanumerics, the special characters "$-_.+!*'(),", and 
reserved characters used for their reserved purposes may be used 
unencoded within a URL. 

HttpUtility.UrlEncodeWebUtility.UrlEncode도 괄호 ()은 인코딩되지 않은 상태로 사용할 수 있다는 표준이 나와 있으므로 해당 문자를 인코딩하지 않습니다.

내가 왜 URL에 사용할 수있는 문자로 나열되기 때문에 링크 된 URL Encoder/Decoder이 인코딩 된 이유를 모르겠습니다.

+0

HTTP를 통해 제 3 자 API를 호출하고 매개 변수의 문자열. 이 문자열은 인코딩 된 UTF-8 URL입니다. 내 API 클라이언트는 API 호스트가 Java로 작성된 asp.net C#으로 작성되었습니다. 문자열 매개 변수에 괄호/대괄호()와 같은 문자가있는 경우 UTF-8 인코더는 인코딩하지 않지만 API 호스트는 % 28 및 % 29에서 인코딩하므로 잘못된 응답을받습니다. 이 문제를 해결하는 방법은 무엇입니까? – rumi

+0

API는 http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html – rumi

+0

설명서에서 다음 API 참조를 볼 수 있습니다. http : // stackoverflow .com/questions/846487/how-to-get-uri-escapedatastring-to-comply-with-rfc-3986 – Dirk

12

Uri.EscapeDataString 원하는 것을 수행합니다. MSDN을 참조하십시오.

+0

죄송합니다. 작동하지 않습니다. 이 문자열을 시도했습니다. str = "test (brackets)"; str = Uri.EscapeDataString (str); – rumi

+0

이상한. "문자열 결과 = Uri.EscapeDataString ("test (대괄호) "););" 결과는 "test % 28brackets % 29"입니다. 시스템에서 EscapeDataString 뒤에 str이있는 값은 무엇입니까? –

+0

문자열은 동일하게 유지됩니다. 변경되지 않음 – rumi