Нет способа указать кодировку для каждой загрузки из коробки.ZK по умолчанию позволяет указывать только кодировку для формата файла.Это работает так:
Вы должны создать экземпляр Media
с форматом, но без ctype
(тип содержимого).Затем ZK будет искать тип контента (плюс кодировка), используя ContentTypes.getContentType()
.
. В этом случае это будет:
String bom = "\uFEFF";
AMedia media = new AMedia(filename, "csv", null, bom + dataAsString);
Filedownload.save(media);
Примечание: bom
необходимо длядобавьте Порядок следования байтов к загрузке, чтобы Excel поступил правильно.Для других форматов файлов это не требуется.
Чтобы установить кодировку, добавьте файл contentTypes.properties
в ваш путь к классам (укажите его в src/main/resources/
при использовании Maven):
csv=text/csv;charset=UTF-16LE
ZK проанализирует этот файл во время запуска.Когда обрабатывается объект Media
без типа контента, но с форматом csv
, ZK устанавливает тип контента на text/csv;charset=UTF-16LE
в AMedia.setup()
.
Другой вариант - создать собственную реализациюинтерфейс Media
, который не удаляет часть charset
из типа содержимого.
Связанный: