Как создать правильно экранированный URI file:// в С#?

Каким будет правильный способ создать полностью закодированный URL-адрес file:// URI из локального пути, то есть где все специальные символы, такие как пробелы и т. д., экранированы?

Учитывая следующий ввод

C:\Data\Input Document.txt

я хотел бы получить

file:///C:/Data/Input%20Document.txt

я использовал

Uri uri = new Uri(@"C:\Data\Input Document.txt", UriKind.RelativeOrAbsolute); 

Однако это приводит к неэкранированному URI:

file:///C:/Data/Input Document.txt

person Dirk Vollmar    schedule 23.06.2009    source источник


Ответы (2)


он уже закодирован

uri.AbsolutePath должен дать вам "C:/Data/Input%20Document.txt"

person Rony    schedule 23.06.2009
comment
Спасибо, я пропустил это. Однако оно работает только для абсолютных URI, так как это свойство не установлено для относительных URI. - person Dirk Vollmar; 23.06.2009

Ты пытался:

new Uri(str).AbsoluteUri

Не уверен, что понимаю ваше требование относительно относительных URI...

person Lachlan    schedule 23.06.2009