2015-03-31 2 views
0

в моем приложении пользователь может загрузить отчет о Excel. Когда пользователь загружает xls с использованием FF, тогда кодирование прекрасное, а умлауты отображаются правильно. Если пользователь делает то же самое в IE и Chrome, то умлауты в xls будут разбиты.Сломанная кодировка в отчете Excel от Java

Отчет Excel создается в сервлете, используя Apache POI v3.10.1 и , заполненный теми же данными каждый раз. Но файлы xls, загружаемые в FF и IE (или Chrome), различны.

Любая идея, почему?

Кстати, я попытался установить кодировку в ответ заголовок

response.setHeader("Content-Type", "application/vnd.ms-excel; charset=UTF-8");

, но без успеха.

UPD 03.04. кусок кода из сервлета:

OutputStream out = response.getOutputStream(); ... response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + ".xls" + "\""); ... workbook.write(out);

+0

В общем случае проблема появляется только в режиме «Защищенный просмотр». Похоже, что IE и Chrome добавляют что-то к ответу, чтобы уведомить Excel о том, что файл поступает из Интернета. –

+0

Почему вы устанавливаете кодировку в двоичном файле? Бинарные файлы, такие как excel, не имеют кодировок, это текстовая статья – Gagravarr

+0

@Gagravarr, я согласен. Но у меня нет другого представления об этой проблеме. –

ответ

0

IE как-то не могу понять вашу response.setHeader("Content-Type", "application/vnd.ms-excel; charset=UTF-8");. Попробуйте это вместо response.setContentType("application/vnd.ms-excel");. Он работает на моих IE8 и FF35.

+0

уже пробовал этот - не помогает с проблемой –

Смежные вопросы