![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
vzf |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 10.9.2005 Репутация: 2 Всего: 5 |
Здравствуйте.
Пишу приложение на JSF. Возникла проблема с кодировкой.
Значение link.addressForSetup тащится из базы данных и представляют собой ссылку на файл. В ссылке есть как английские так и русские символы. Проблема заключается в том, что при отрисовки страницы. Титл ссылки (alt) отображается нормальн и русские символы и английсские, но в значение самой ссылке (href) русские символы отображаются как %251E%2511%2529%2518%2515/6.%252 и поэтому сама ссылка получается неправильной, т.е. при нажатии на нее браузер не может окрыть файл. Как исправить эту проблему и в чем тут дело? Это мой косяк или бага JSF? --------------------
Java - Write Once, Test EveryWhere! |
|||
|
||||
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
vzf, никакого косяка нет, все по спеку
![]() Просто стандартом HTTP предусмотрено определенное множество символов, которые могут присутствовать в URL, и русские буквы, к сожалению, в это множество не попадают. Те символы, которые не входят в число базовых, передаются двоичными кодами. Какими именно - зависит от испольуемой кодировки. Консорциум W3C сильно советует использовать UTF-8 (похоже, в приведенном тобой примере строка закодирована именно в ней). Для того чтобы программисту самому не страдать с закодированием/раскодированием УРЛов, в Java предусмотрены два класса-утилиты, URLEncoder и URLDecoder, у которых есть соответствующие статические методы encode(String url, String encoding) и decode(String url, String encoding). Вот их как раз и надо использовать для преобразования одного в другое. Вот описания этих классов: Если файлы, о которых ты говоришь, выдаются напрямую дефолтным сервлетом, то значит надо подменить его своим собственным, который будет правильно раскодировать имена файлов с русскими буквами. Успехов! -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
vzf |
|
||||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 10.9.2005 Репутация: 2 Всего: 5 |
Спасибо за разъяснение. С обычными html ссылками у меня получилось, а вот с сылками на локальные ресурсы проблемы.
Вот написал простенькую страницу JSF и бин к ней для демонстрации проблемы. Бин.
Страница
После перекодировки получаю.
На странице получается ссылка
Но это ладно, самое обидное что даже если в браузере вручную вбить %5C%5Chost531%5C%D0%9A%D0%BD%D0%B8%D0%B3%D0%B8 Ресурс не откроется :( Это сообщение отредактировал(а) vzf - 29.6.2007, 14:24 --------------------
Java - Write Once, Test EveryWhere! |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |