![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Lanqu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 11.11.2008 Репутация: нет Всего: нет |
Проблема в следующем.
Клиент просит файл в браузере тыком мышки по кнопке. Стратс берёт управление. С диска на сервере считываю файл. Имя файла получаю из базы данных MySQL. Теперь надо его передать клиенту. Офоромил action с результатом StreamResult. Поле inputStream типа InputStream . В struts.xml использовал такой вот код: <action name="FileWorkDownload" class="com.wtf.Actions.work.FileWorkDownload"> <result type="stream"> <param name="contentType">application/octet-stream</param> <param name="bufferSize">1024</param> <param name="contentDisposition">filename="${fileName}"</param> </result> </action> Так вот ${fileName} русскими буквами клиенту возвращается как "Эээ№ -32$$% .[расширение]" Если строку в fileName в экшене я записываю как fileName = "файл.doc"; то она храниться в UTF-16 , так? А struts.xml обьявлен вначале как <?xml version="1.0" encoding="UTF-8"?> Вот вопрос теперь в том, почему приходят клиенту кракозябры? Может надо выставить в респонз UTF-8 кодировку? Если да, то почему я выставил response.setCharacterEncoding("UTF-8"); (ещё прбовал UTF-16, cp1251) Но кракозябры продолжились? |
|||
|
||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Здравствуй.
А в какой кодировке в базе лежат имена файлов? Добавлено через 59 секунд да и struts.xml тут не при чем: он считывается при старте приложения, а дальше все переменные уже задаются объектам меппинга, а не в xml -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
Lanqu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 11.11.2008 Репутация: нет Всего: нет |
В базе они лежат в utf8_unicode_ci
На JSP страницах нормально отображает русские строки из базы. Даже если в самом struts.xml прописать имя файла русскими буквами - кракозябры вылазят. |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 14 Всего: 104 |
Может название надо кодировать с URLEncoder.encode() ? Это же http header.
-------------------- Lost.... |
|||
|
||||
Lanqu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 11.11.2008 Репутация: нет Всего: нет |
Точно. header!! Сработало
![]() тока не полагаясь на encode(string) использовал encode(string, string) для указания UTF-8. Теперь на русском файлы! ![]() |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 14 Всего: 104 |
Lanqu, пометь вопрос как решенный (Справа сверху).
-------------------- Lost.... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |