Como lidar com caracteres especiais em HyperLink.NavigateUrl do ASP.NET?

votos
2

Atualmente, estou tendo problemas para descobrir como lidar com um filepath ser (dynamicly) passou para um HyperLinkcontrole NavigateUrlde propriedade.

Vamos dizer que eu estou tentando fazer referência a um arquivo chamado jäynä.txtna raiz C:.
Passando file:///C:/jäynä.txtresultado para um link para file:///C:/jäynä.txt, como o faz HttpUtility.UrlPathEncode(file:///C:/jäynä.txt).

Substituindo os ä** s com **%E4 , o que dá a corda file:///C:/j%E4yn%E4.txt, dá uma ligação de funcionamento para file:///C:/jäynä.txt, mas eu não tenho sido capaz de encontrar uma maneira de fazer a substituição sem defini-la sozinho. Com Replace(ä, %E4), por exemplo.

Existe uma maneira de lidar com automaticly a string filepath para que o HyperLinkiria exibi-lo corretamente, sem listar manualmente quais caracteres para substituir na string?

Nota adicional:
Pode haver uma maneira de contornar isso spesifying a codificação de caracteres em que a página é processada, porque a depuração mostra que a HyperLink, pelo menos, salva a string file:///C:/jäynä.txtinalterada, mas de alguma forma mangles-lo em torno do tempo de renderização.
No entanto, isso só parece ser o caso na prestação dos NavigateUrlporque outros componentes, bem como HyperLinkde Text-property são bastante capaz de tornar o personagem äinalterado.

Publicado 09/03/2009 em 14:34
fonte usuário
Em outras línguas...                            


4 respostas

votos
1

Isto é devido à forma como o navegador começa a interpretar o caminho, normalmente as pessoas vão evitar o uso de caracteres como o que nos URLs das páginas.

No seu caso, eu acredito que você golpeou sobre o melhor cenário, como eu não tenho conhecimento de qualquer maneira de mudar o comportamento de HttpUtility e ou a propriedade / NavigateUrl. Pelo menos não sem criar um controle personalizado para ele.

Respondeu 09/03/2009 em 14:40
fonte usuário

votos
1

Não use o controle HyperLink. Em vez disso usar o controle HtmlAnchor. Ele vai resolver seu problema. Eu não sei por que a Microsoft projetado como este.

Respondeu 23/05/2010 em 12:44
fonte usuário

votos
4

A propriedade NavigateUrl de um Hyperlink irá codificar caracteres Unicode na url.

Em vez disso você pode definir a propriedade atributo href do Hyperlink como este:

hyperlink1.Attribute("href") = "file:///C:/jäynä.txt"
Respondeu 21/05/2012 em 19:00
fonte usuário

votos
0

Obrigado! O post usando os 'atributos' resolveu o meu problema. No meu caso, foi

HyperLink6.Attributes["href"] = "http://høgstedt.danquah.dk/";

O problema do uso de caracteres especiais dinamarquês em uma url parecem ter sido incomodando um monte de programadores - uma pesquisa fornece várias abordagens muito complicadas. Este é simples e simplesmente funciona. Então mais uma vez, obrigado

Respondeu 19/12/2012 em 10:10
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more