2011-09-07 5 views
5

유니 코드가 포함 된 URL을 인코딩하는 방법은 무엇입니까? 커맨드 라인 유틸리티에 전달하고 싶습니다. 먼저 인코딩해야합니다.URL 유니 코드 문자 인코딩

예 : http://zh.wikipedia.org/wiki/白雜訊

http://zh.wikipedia.org/wiki/%E7%99%BD%E9%9B%9C%E8%A8%8A가된다.

+0

그것은 유니 코드 URL로 인코딩 된 Stackoverflow 텍스트 편집기 것 같습니다. 나는 C#에서 동일하게하고 싶다. 링크를 클릭하면 실제 유니 코드 URL을 얻을 수 있습니다. – Tomas

+2

스택 오버플로가이 작업을 수행하지 않았습니다 - 브라우저가 수행했습니다! URL을 유니 코드로 표시하지만 복사하면 복사 한 텍스트에 URL로 인코딩 된 문자열이 포함됩니다. –

+0

@KonradRudolph 그러나 내 브라우저는 그렇지 않았습니다. 나는 그것이 내가 중국어 문자라고 추정하는 것으로 본다. :) –

답변

7

당신은 System.Web 어셈블리의 HttpUtility.UrlPathEncode 방법 (전체 .NET 프레임 워크 4 프로필이 필요)를 사용할 수 있습니다.

그래서, 지금 그 일을의 올바른 방법,

var urlString = Uri.EscapeUriString("http://zh.wikipedia.org/wiki/白雜訊"); 
+0

유니 코드 문자를 가져 오는 방법은 무엇입니까? URL은 사용자에 의해 전달되며 유니 코드 문자가 URL에 나타나는 위치를 알지 못합니다. – Tomas

+0

@ 토마스 : 귀하의 의견에 대한 답변이 업데이트되었습니다. –

+1

UrlPathEncode는 경로의 문자와 호스트 이름을 제외한 URL의 다른 부분에 대해 올바른 작업임을 유의하십시오. IRI의 호스트 이름에 유니 코드 문자가있는 경우 URI를 만들려면 IDN 알고리즘 (Punycode)을 사용하여 인코딩해야합니다. – bobince

0
Server.UrlEncode(s); 

.NET 문자열 (인코딩 UTF-8, 구체적으로) 기본적으로 유니 코드 문자열 그래서 당신은 아무것도 소위 "고유"서버 속성에서 사용할 수 있지만 (HttpServerUtility.UrlEncode를 호출보다 더 필요 asp.net의 대부분의 컨텍스트에서이 작업을 수행 할 수 있습니다). 더 이상 UrlPathEncode을 사용할 수 없습니다 MSDN에 따르면

var encoded = HttpUtility.UrlPathEncode("http://zh.wikipedia.org/wiki/白雜訊"); 
+0

유니 코드 문자 만 인코딩하려고하지 않습니다. – Tomas

+0

전체 URL이 아닌 개별 매개 변수 값을 인코딩합니다. – Matthew

+0

유니 코드 URL을 Server.UrlEncode (으)로 전달하면 다음과 같은 특수 URL 문자와 함께 모든 유니 코드 문자가 인코딩됩니다. // 나는 그것을하고 싶지 않다. – Tomas

0

나는 터키어 문자 문제가 있었다. <a href="/@Html.Raw(string)"이 문제를 해결했습니다