2012-03-19 2 views
3

У меня есть веб-страница, где я выполняю поиск на основе текста, указанного в текстовом поле. Этот текст может быть на любом языке, таком как японский, китайский и т. Д. (Или любой символ mbcs).Символ поврежден, когда используется request.getParameter() в java

Теперь, когда я ввожу текст на японском (или любом другом символе mbcs), результат заполняет экран (форму) некоторыми wierd-символами.

Пример: testテスト будет состоять из testãã¹ã.

Когда я вижу параметры пост в Firebug (средство отладки) я могу видеть, что строка поиска идет как testテスト однако, когда я поставил отладочные операторы в моем коде, я могу видеть, что request.getParameter("searchString") не в состоянии определить японские символы и превратить их в несколько странных символов.

Мой JSP заголовок уже <%@ page contentType="text/html; charset=UTF-8"

Я также попытался положить pageEncoding="UTF-8" в этом, но это не помогло.

Я попытался установить кодировку символов, например request.setCharacterEncoding("UTF-8") также перед тем, как сделать request.getParameter, но это тоже не сработало для меня.

После прохождения нескольких форумов и блогов я также попытался установить useBodyEncodingForURI=true в <Connector> конфигурации tomcat, но это также не помогло мне.

Может кто-нибудь предложить мне что-то решить эту проблему?

+1

«когда я поставил отладочные операторы в моем коде» - это означает, что? Какая отладка? 'System.out.println()'? Какая операционная система? – skaffman

+0

Если я не ошибаюсь, вам может потребоваться преобразовать его в ascii. –

+0

Hey Skaffman..by отладочные заявления я имею в виду некоторые регистраторы в моем коде, а не инструкции SOP – user1278265

ответ

1

установить следующее кодирование в каждом сервлетов/действие

response.setContentType("UTF-8"); 
response.setCharacterEncoding("UTF-8"); 
request.setCharacterEncoding("UTF-8"); 

также установлено следующее в первом сервлетов/действие

для японского

response.setCharacterEncoding("UTF-8"); 
request.setCharacterEncoding("UTF-8"); 
session.setAttribute(Globals.LOCALE_KEY, new Locale("jp", "ja_JP")); 
+0

Hi Mohit, Спасибо за ваш ответ, но это тоже не помогло. :(Более того, я возвращаю ответ обратно, но делаю переадресацию в jsp в зависимости от успеха и сбоя (фреймворк Struts). И, как я упоминал в своем сообщении, у моего JSp уже есть кодировка, определенная как UTF-8: «<% @ page contentType = 'text/html; charset = UTF-8' pageEncoding = 'UTF-8' language = 'java'%> " – user1278265

+0

, но вам нужно установить свою кодировку ответа. Я использовал ее и успешно выполнил –

+0

@Mohit: Привет Мохит, я тоже пробовал это, но это не сработало. – user1278265

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