![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 2 Всего: 25 |
Есть веб апликуха, построенная на спринге 2.5.6, развернутая на томкате.
От клиента приходит запрос по урлу, вида: http : // host/search.html?search_text=%u041c%u043e%u0441%u043a%u0432%u0430+-+%u041a%u043e%u0440%u043f%u043e%u0440%u0430%u0442%u0438%u0432%u043d%u044b%u0439+%u043d%u0430 обратите внимание на параметр, как в нем закодирована кириллица! В чистом виде коды utf-8. Клиент со своей стороны ничего сделать не может, потому придется разбирать такой параметр на стороне приложения. Вопрос: есть ли готовые вменяемые средства для перекодирования параметров запроса в таком виде, в вменяемую строку? Или тут только ручная посимвольная практически обработка поможет? Это сообщение отредактировал(а) Hidrag - 14.7.2010, 12:16 -------------------- |
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 3 Всего: 18 |
java.net.URLDecoder
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 2 Всего: 16 |
Я Вам один умный вещь скажу, но Вы не обижайтесь. © Это НЕ UTF-8. Коды кириллицы в UTF-8 начинаются с D0 и D1. А у Вас - 04. Это UTF-16, причем судя по порядку байтов - UTF-16BE. Более того, URLDecoder Вам вряд ли поможет, ибо строка с точки зрения application/x-www-form-urlencoded закодирована неверно - присутствуют лишние 'u', отсутствуют '%' перед КАЖДЫМ байтом. Если ее правильно отформатировать - получается так: %04%1c%04%3e%04%41%04%3a%04%32%04%30+-+%04%1a%04%3e%04%40%04%3f%04%3e%04%40%04%30%04%42%04%38%04%32%04%3d%04%4b%04%39+%04%3d%04%30 Значение - "Москва - Корпоративный на" В общем, я бы разбирал руками. Кстати, это не так страшно. За час пишется. Это сообщение отредактировал(а) Skipy - 15.7.2010, 10:26 |
|||
|
||||
| Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
добрый день
только сегодня утром столкнулся с такой задачей : декодировать все эти проценты и цифры в символы . Skipy , Буду очень признателен если покажите код как вы их декодировали. |
|||
|
||||
| Kircul |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 20.2.2007 Репутация: 1 Всего: 7 |
Я бы использовал примерно такое регулярное выражение (оно поможет перевести строку в массив байтов):
Каждое совпадение - это либо символ, либо его закодированое представление. А дальше дело за малым Это сообщение отредактировал(а) Kircul - 15.7.2010, 11:53 |
|||
|
||||
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 2 Всего: 25 |
Да вот руками в итоге и сделали декодирование, вот метод:
не очень оптимальна работа со строками, конечно, кому будет нужно, оптимизируют Skipy, спасибо. Это сообщение отредактировал(а) Hidrag - 15.7.2010, 13:55 -------------------- |
|||
|
||||
| Skipy |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 2 Всего: 16 |
Конкретно эту строку - сначала руками. Добавлено @ 12:28 Можно и не руками. Спасибо Kircul за идею!
Это сообщение отредактировал(а) Skipy - 15.7.2010, 12:28 |
||||
|
|||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Hidrag, а какой сервак? В Томкате аналогичную проблему порешал настройками коннектора (у него можно кодировку урлов задать).
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 2 Всего: 16 |
Это не поможет. Там только кодировку можно задать, а если строка не соответствует application/x-www-fom-urlencoded - tomcat ничего не сделает. Вернее, то, что он сделает, будет даже хуже, чем если бы он ничего не делал. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
В моем случае строка соответствовала x-www-fom-urlencoded, но клиент кодировал в ней UTF-8, а мое приложение по умолчанию декдировало его в cp1252. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
![]()
|
| Правила форума "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. |