проблема переноса intr-символов из одного сервлета в другой - PullRequest
0 голосов
/ 05 августа 2011

У меня есть одно поле ввода, в которое пользователь может написать все, что захочет, включая международные символы lang.

Первый сервлет имеет;

 protected void doWork(HttpServletRequest request, HttpServletResponse response) throws ServletException,
        IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = new PrintWriter( new OutputStreamWriter(response.getOutputStream(), "UTF8"), true);
out.println("<HTML><HEAD><TITLE>");
...
out.println("<input type=text name=someText  style='width:10em;'>");

Сервлет переходит с кнопкой отправки квторой сервлет, имеющий следующие ключевые строки:

 if(httpRequest.getCharacterEncoding() == null)
            httpRequest.setCharacterEncoding("UTF-8");
String someText= httpRequest.getParameter("someText");

я получаю что-то странное, похожее на: ÅÅÄ ° iü¶Ã¶Ãç§Ä ±, когда я продолжаю отладку.

Что я делаю не так?

спасибо за помощь,

Ответы [ 2 ]

1 голос
/ 05 августа 2011

Установить кодировку символов в UTF напрямую с помощью

httpRequest.setCharacterEncoding("UTF-8");

Нет необходимости проверять ноль, он никогда не будет нулевым.Контейнер / Appserver устанавливает его по умолчанию ISO-8859-1.Это должно решить вашу проблему.

0 голосов
/ 05 августа 2011

Возможно, вам потребуется добавить accept-charset = 'UTF-8' в вашу форму: (Что-то вроде:

<form accept-charset='UTF-8' ... >

ВАЖНОЕ ПРИМЕЧАНИЕ: вы должны использовать только accept-charset = 'utf-8'если вы отправляете страницу как uft-8. Не пытайтесь использовать ее, чтобы изменить кодировку формы на что-то отличное от страницы. (Это необходимо в некоторых браузерах из-за ошибки в стандарте html, где они более новыеуказанная кодировка используется для отправки форм.).

И на несвязанной ноте: пожалуйста, не используйте out.println для получения html-вывода из сервлета. Невозможно поддерживать, когда вы смешиваете код и html.Используйте инструмент, такой как Velocity, для разделения html и java.

http://velocity.apache.org - вы сможете запустить его менее чем за час).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...