2016-11-18 3 views
3

У нас есть .Net Web-приложение, в котором пользователь может скачивать файлы. Имя файла, в котором могут быть файлы, может содержать датские символы æ, ø и å и, возможно, некоторые другие символы некоторого языка foreigh.Разница между ContentDispositionHeaderValue.FileName и ContentDispositionHeaderValue.FileNameStar

Мы используем класс HttpResponseMessage для отправки файла, в котором ContentDispositionHeaderValue инициализируется как «приложение».

Однако присвоение свойству

FileName 

не работает в IE для датских символов, но работает, если я задаю имя файла

FileNameStar 

, где имя файла получает автоматически закодированной в нужном формате ,

Так это работает:

Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
{ 
    FileNameStar = "filename with æ ø and å" 
}; 

Я могу, однако, не найти какой-либо документации, почему он автоматически кодируется, и какие браузеры поддерживают эту функцию.

Поиск в Интернете дает предложения о том, что я должен кодировать строку перед назначением свойства FileNamestar. Но это не обязательно, поскольку я вижу в трассе http, что он закодирован правильно.

Поддерживаются ли все основные браузеры? И могу ли я быть уверенным, что имена файлов закодированы правильно?

Благодаря Джихад

ответ

3

Взятые из here:

Свойство FileNameStar использует IETF RFC 5987 кодирование. Свойства FileName и FileNameStar отличаются только тем, что FileNameStar использует кодировку, определенную в IETF RFC 5987, что позволяет использовать символы, не присутствующие в наборе символов ISO-8859-1.

+0

Спасибо. Но какие браузеры поддерживают это, и могу ли я отправить как FileName, так и FileNameStar в тот же запрос? –

+0

Большинство браузеров поддерживают это. Если ваше имя файла - это набор символов ISO-8859-1, то используйте FileName, если он содержит символы UTF, используйте FileNameStar. Если можно использовать FileNameStar, он будет работать в обоих случаях. – Jonas