Ну, для меня я встретился с той же проблемой, как Вы делаете в начале, когда я начал делать OCAML, но прием - то, что необходимо начать думать приблизительно , что Вы хотите от кода и не , как сделать это !!!
, Например, для вычисления квадрата элементов списка, забывают о длине списка, и такие приемы, всего думают математически как этот:
, если список пуст->, я сделан
в противном случае тогда, список должен иметь голову и хвост-> Вы вычисляете квадрат головы, затем просите, чтобы Ваша функция сделала то же с хвостом.
Просто думают об общем случае и основном, и что Вы испускаете данные и не изменяете их (если Вы не хотите изменить их;)).
Удачи!
Я кодирую такое имя файла для загрузки,
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename= " + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
На основе ответа ZZ Coder, и поскольку я использую FileResult, я решил закодировать имя файла как:
HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)
Эта проблема известна уже много лет. Насколько я могу судить, в настоящее время нет совместимого способа сделать это, поэтому ответ - поддерживать только один набор браузеров или выполнять сниффинг User Agent.
Тестовые примеры и ссылки на: http: //greenbytes.de/tech/tc2231/[1215 impression
Я недавно немного боролся с этим, потому что для имен файлов использовалось много потенциальных языков (китайский хорошо подходит для тестирования). Вот что-то близкое к тому, что я получил (за исключением других деталей реализации):
HttpUtility.UrlEncode("é", System.Text.Encoding.GetEncoding("ISO-8859-1"))