Пробелы в именах файлов, вызывающие проблему

#c# #asp.net #whitespace

#c# #asp.net #пробелы

Вопрос:

 FileInfo[] FileList1 = Dir.GetFiles("*.doc", SearchOption.AllDirectories);
foreach (FileInfo FI in FileList1)
{
    Response.Write(
        "<td><a href= view5.aspx?file="   strheadlinesid   "\"   
        FI.Name   " target=_self;> "  FI.Name   "</a></td>");
}
  

Когда я попытался напечатать имена файлов с пробелами, вместо пробела в имени файла добавляется ‘#’, что создает для меня проблемы.
Кто-нибудь может подсказать решение для

Ответ №1:

Кодировка URL гарантирует, что все браузеры будут корректно передавать текст в строках URL. Такие символы, как вопросительный знак (?), амперсанд (amp;), косая черта (/) и пробелы, могут быть усечены или повреждены некоторыми браузерами. В результате эти символы должны быть закодированы в тегах или в строках запроса, где строки могут быть повторно отправлены браузером в строке запроса.

 fileName = HttpServerUtility.UrlEncode(fileName);
  

Комментарии:

1. Только в этом случае это произойдет автоматически, поскольку браузер автоматически закодирует ссылку URLEncode. Пользователь забыл добавить кавычки.

2. Не могли бы вы уточнить свой ответ, пожалуйста. Я не мог понять.

3. Если вы знаете, что отправляемый вами текст может содержать специальные символы, всегда UrlEncode его.

4. FI = HttpServerUtility. UrlEncode (FI); Я добавил эту строку, но она выдает ошибку.

Ответ №2:

Попробуйте использовать кавычки!

 FileInfo[] FileList1 = Dir.GetFiles("*.doc", SearchOption.AllDirectories);
foreach (FileInfo FI in FileList1)
{
    Response.Write(
        "<td><a href="view5.aspx?file="   strheadlinesid   "\"   
        FI.Name   "" target="_self"> "  FI.Name   "</a></td>");
}