2012-12-18 2 views
0

특수 문자가 포함 된 URL에 문제가 있습니다.URL의 인코딩 된 문자 퍼센트가 브라우저에서 오류를 발생합니다.

<a href="http://www.v%c3%a4rnamo.nu">www.värnamo.nu</a> 

는 내가 중 하나가 작동하지 않습니다이 출력을 얻을이 NavigateUrl='<%# HttpUtility.HtmlEncode(Eval("website")) %>'처럼 인코딩하려고하면 : 나는 NavigateUrl='Eval("website")'을 사용하는 경우 렌더링 된 HTML이있다.

<a href="http://www.v&/"288;rnamo.nu">www.värnamo.nu</a> 

나는 UTF-8iso-8859-1에 메타 태그의 캐릭터 세트를 설정했지만, 그것은 도움이되지 않았고, 나는 그 중 하나 함께 할 수있다 생각하지 않습니다.

http://www.v%c3%a4rnamo.nu 링크를 클릭하면 동일한 응답을 받게됩니다.

다른 방법은 없습니까?

+1

첫 번째 문제는 무엇입니까? – Musa

+0

링크 중 하나를 클릭하면 "서버를 찾을 수 없습니다"라는 메시지가 나타납니다. * www.v % c3 % a4rnamo.nu * 또는 * www.v &/"288; rnamo.nu *에서 서버를 찾을 수 없습니다. 브라우저의 텍스트는 좋아 보이지만 url 필드에서 enter를 누르면 서버로 이동할 수 있습니다. – Niklas

답변

0

HtmlEncode의 사용하십시오. 나는 내가 NavigateUrl 속성에이를 사용하는 내 aspx 페이지에서이 LINK

의 코드를 사용 : 내가 볼 수있는 HTML을 볼 때 지금

public static string idnMapping(string text) { 
    System.Globalization.IdnMapping idn = new System.Globalization.IdnMapping(); 
    return idn.GetAscii(text); 
} 

: 함수를 호출

NavigateUrl='<%# idnMapping(Convert.ToString(Eval("website"))) %>' 

<a href="http://xn--vrnamo-bua.nu">www.värnamo.nu</a> 

그리고이 링크를 클릭하면 페이지가 올바르게 열립니다.

1

punycode를 시도하면 http://www.xn--vrnamo-bua.nu이됩니다. 이 코드는 http://www.charset.org/punycode.php을 사용하여 만들었습니다.이 코드는이 변환을 위해 PHP 코드를 제공한다고 주장합니다.

+0

정확히 어떻게 사용합니까? PHP와 .NET을 결합하길 원하십니까? – Niklas

+0

아니요 ...하지만 언급 한 페이지는 .NET으로 변환 될 수있는 PHP 클래스가 포함 된 zip 파일을 가리키는 다운로드 링크가있는 페이지에 대한 링크입니다. 주로 특수 문자를 인코딩 할 수있는 형식을 제안했습니다. 나는이 변환을 수행하는 .NET에 내장 된 어떤 것도 모릅니다. 따라서 다른 소스에서 알고리즘이나 코드를 얻는 것이 보장됩니다. – prprcupofcoffee

+0

.NET에서 punycode를 사용하는 IdnMapping이 있습니다. http://blog.tjitjing.com/index.php/2008/06/punycode-in-vbnet-for-idn-domains.html. 브라우저가 변환 된 내용을 다시 녹음하지 못해서 작동하지 않았습니다. – Niklas

0

내가 실제로 지금 일을 가지고 HttpUtility.HtmlDecode(Eval("website")) 대신

+0

여전히 동일한 URL을 생성합니다. ** http : //www.v%c3%a4rnamo.nu** – Niklas

+0

.NET 4.0에서 실행중인 경우 WebUtility.HtmlDecode –