В настоящее время у меня возникают проблемы с тем, как обращаться с файловой дорогой (динамически), переданной в собственность HyperLink
элемента управления NavigateUrl
.Как справиться со специальными символами в HyperLink.NavigateUrl ASP.NET?
Предположим, что я пытаюсь обратиться к файлу с именем jäynä.txt
в корне C:
.
Передача "file:///C:/jäynä.txt"
приводит к ссылке на file:///C:/jäynä.txt
, равно как и на HttpUtility.UrlPathEncode("file:///C:/jäynä.txt")
.
Замена ä
** s с ** %E4
, что дает строку "file:///C:/j%E4yn%E4.txt"
, не дают рабочую ссылку на file:///C:/jäynä.txt
, но я не смог найти способ сделать замену, не определяя его сам. Например, с Replace("ä", "%E4")
.
Есть ли способ автоматически обрабатывать строку пути к файлу так, чтобы HyperLink
отображал ее правильно, без мануального перечисления каких символов заменить в строке?
Дополнительное примечание:
Там может быть путь, чтобы обойти это путем spesifying кодировки символов, в котором визуализируется страница, потому что отладка показывает, что HyperLink
по крайней мере сохраняет строку "file:///C:/jäynä.txt"
без изменений, но как-то искалечил его вокруг времени рендеринга.
Однако, это, кажется, только в случае оказания NavigateUrl
, потому что другие компоненты, а также HyperLink
«s Text
-property все вполне способны оказывать характер ä
без изменений.
Нет, я не верю, что это браузер. Я только что проверил источник страницы в первом случае, а ссылка href - href = "file: /// C: /j%c3%a4yn%c3%a4.txt", предполагая, что сервер передал ее в первое место. Вы можете быть правы на усложнении. – vipirtti
Это может косвенно быть браузером, основанным на чем-то в BrowserCaps или чем-то подобным, чтобы отобразить его в системе. Независимо от того, значения, которые вы указываете NavigateUrl, должны быть предварительно очищены. Это задокументировано, поскольку он автоматически не делает ничего с UrlEncode. –