Символ поврежден при использовании request.getParameter () в Java - PullRequest
3 голосов
/ 19 марта 2012

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

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

Например: 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 Ответ

1 голос
/ 19 марта 2012

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

 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"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...