![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| physicist |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 8.7.2009 Репутация: нет Всего: нет |
Итак, пишу я значит портлетик, который аплоадит файл на сервер. Все прекрасно, но в строковых полях формы ломается кодировка. Проблему я решил, но мне кажется, что метод которым я пользовался не true-way.
Теперь подробности. Request из формы парсится с помощью FileUpload и строковое поле из него берется с помощью метода:
В итоге на странице возникают кракозяблы, типа: ааа Проблему я решил с помощью следующего кода:
где item.get() возвращает массив byte[]. Вопрос: правильно ли все сделал? Можно ли сделать это как-нибудь правильнее? PS. Пишу здесь, а не в ветке j2ee, потому что вопрос имеет общий характер и решается тривиальным образом. К сожалению, я не знаю как :-( upd: Если в конструкторе принудительно не указывать кодировку:
то проблема остается. Это сообщение отредактировал(а) physicist - 23.7.2009, 13:56 |
||||||
|
|||||||
| Andy_L20066 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 10.3.2008 Репутация: нет Всего: 1 |
привет,
Могу предположить что ты делаешь все правильно. new String(byte[]) использует System default encoding. Если у тебя байты твои приходят на сервер из другим типом encoding, то нужно использовать конструктор new String(byte[], сharset). Просто encoding на сервере и клиенте у тебя разные. |
|||
|
||||
| physicist |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 8.7.2009 Репутация: нет Всего: нет |
Andy_L20066, вопрос в том, как установить кодировку по умолчанию, если у сервера стоит другая кодировка? Причем, предположим, что менять настройки сервера нельзя.
|
|||
|
||||
| Andy_L20066 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 10.3.2008 Репутация: нет Всего: 1 |
а чем тебе нравится указывать его явно? может действительно будет лучше и на клиенте и на сервере иметь один и тот же encoding, задавая его константой... ну что-то типа
Добавлено через 3 минуты и 51 секунду попробуй еще поискать ответ в самом хелпе FileUploaderа (библиотека которую ты используешь для загрузки файла) |
|||
|
||||
| olegrolik |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 25.1.2006 Репутация: нет Всего: нет |
Я бы предложил использовать фильтр. Можно замапить фильтр на все запросы (сервлеты - "/") и указывать определённую кодировку, например cp1251. Кодировку вынести, скажем в отдельный файл (конфиг). Фильтр будет брать кодировку из конфига, и при загрузке файла тоже тянешь кодировку из конфига:
P.S. правильно ли я понял, что item - это объект класса FileItem? |
||||
|
|||||
| physicist |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 8.7.2009 Репутация: нет Всего: нет |
[QUOTE=olegrolik,30.7.2009, 11:03]
Да. Кстати, спасибо за идею с фильтром. Что-то сразу до нее не догадался. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |