如何处理ASP.NET中的特殊字符';你呢?

如何处理ASP.NET中的特殊字符';你呢?,asp.net,character-encoding,hyperlink,navigateurl,Asp.net,Character Encoding,Hyperlink,Navigateurl,我目前很难弄清楚如何处理要(动态地)传递给HyperLink控件的NavigateUrl属性的文件路径 假设我试图引用C:根目录下名为jäynä.txt的文件 传递”file:///C:/jäynä.txt“指向file:///C:/jÃyn÷.txt,以及HttpUtility.urlpathcode(“file:///C:/jäynä.txt“ 将ä**s替换为**%E4,这将生成字符串”file:///C:/j%E4yn%E4.txt“,提供指向file:///C:/jäynä.txt,

我目前很难弄清楚如何处理要(动态地)传递给
HyperLink
控件的
NavigateUrl
属性的文件路径

假设我试图引用
C:
根目录下名为
jäynä.txt
的文件 传递
”file:///C:/jäynä.txt“
指向
file:///C:/jÃyn÷.txt
,以及
HttpUtility.urlpathcode(“file:///C:/jäynä.txt“

ä
**s替换为**
%E4
,这将生成字符串
”file:///C:/j%E4yn%E4.txt“
,提供指向
file:///C:/jäynä.txt
,但我无法找到一种方法来进行替换,而不是自己定义它。例如,使用
替换(“ä”和“%E4”)

是否有一种方法可以自动处理文件路径字符串,以便
超链接
能够正确显示它,而无需手动列出字符串中要替换的字符

附加说明:
有一种方法可以解决这个问题,即指定页面呈现时的字符编码,因为调试表明
超链接
至少保存了字符串
”file:///C:/jäynä.txt“
未更改,但在渲染期间会以某种方式将其损坏。

然而,这似乎只是在呈现
NavigateUrl
时的情况,因为其他组件以及
HyperLink
Text
-属性都能够使字符
ä
保持不变。

这是由于浏览器如何开始解释路径,通常,个人会避免使用页面URL中的字符


在您的情况下,我相信您已经找到了最佳情况,因为我不知道有任何方法可以更改HttpUtility和/或NavigateUrl属性的行为。至少在没有为其创建自定义控件的情况下是这样。

不要使用超链接控件。而是使用HtmlAnchor控件。它会解决你的问题。我不知道微软为什么会这样设计。

超链接的NavigateUrl属性将对url中的unicode字符进行编码

相反,您可以设置超链接的href属性,如下所示:

hyperlink1.Attribute("href") = "file:///C:/jäynä.txt"
谢谢大家!! 使用“属性”的帖子解决了我的问题。在我的情况下是这样的

HyperLink6.Attributes["href"] = "http://høgstedt.danquah.dk/";
在url中使用特殊丹麦字符的问题似乎一直困扰着许多程序员——搜索提供了几种非常复杂的方法。这是一个简单的,它只是工作。
因此,再次感谢你

不,我不相信这是浏览器。我刚刚检查了第一个案例中的页面来源,链接href=”file:///C:/j%c3%a4yn%c3%a4.txt,这表明服务器首先是如何呈现它的。你的解决方案可能是正确的。它可能是间接的浏览器,基于BrowserCaps中的某个东西或类似的东西来呈现给系统。无论如何,必须预先清理为NavigateUrl指定的值。这是有文档记录的,因为它不会自动对UrlEncode执行任何操作。正确的语法是:
hyperlink1.Attributes[“href”]=”file:///C:/jäynä.txt“
如果使用vb.NET,则可以使用大括号。不要发布答案只是为了表示感谢。一句话就够了。更值得赞赏的是投票表决