|
Topic:
Русская кодировка в сервлетах Tomcat
Replies:
1
Pages: 1
Last Post:
25.06.2012 14:43
by:
leah
|
 |
|
|
|
Русская кодировка в сервлетах Tomcat
Posted:
24.06.2012 10:58
|
|
Работаю в Eclipse 3.7.2 под Tomcat 7.0.25 Вот сервлет:
public class EncodingTest extends HttpServlet { public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setCharacterEncoding ("utf-8"); PrintWriter out = res.getWriter (); out.println ("<html><body>"); out.println ("Русский Текст..."); out.println ("</body></html>"); } }
Я ничего не могу понять с выводом русского текста... У получающегося HTML стоит правильная кодировка (utf-8) Однако, на экране сплошные ? и/или !
При этом: 1. Сам файл набран тоже в utf-8 2. res.setContentType("text/html; charset=utf-8"); - не помогает 3. res.setCharacterEncoding("utf-8"); - не помогает 4. META-тег с charset - аналогично
Помогите, кто чем может!
|
|
 |
leah
Posts:
1 284
From:
Zelenograd
Registered:
05.06.03
|
|
Re: Русская кодировка в сервлетах Tomcat
Posted:
25.06.2012 14:43
|
|
http://www.javable.com/forum/thread.jspa?forumID=17&threadID=16789&messageID=78143#78143
1) Задача действительно тривиальна (см сразу пункт 6!) 2) Нужно использовать фильтр, request.setCharacterEncoding() или как я написал конкретно для томката. 3) request.setCharacterEncoding() нужно вызывать ДО ЛЮБОЙ записи в выходной поток, поэтому часто его не следует вызывать из JSP! 4) нужно правильно установить кодировку ответа сервлета либо html-тегом <meta>, или, что существенно лучше, соответствующим http-заголовком 5) нужно удостовериться, что браузер правильно понял кодировку сервлета. для мозиллы можно установить этот плугин http://livehttpheaders.mozdev.org/ который показывает какие заголовки призодят 6) в файле web.xml твоего приложения установить заголовок по-умолчанию элементом если контейнер поддерживает Servlets 2.4 (томкат 5.0 и выше)
1 2 3 4 5 6 7 8 9
| <web ...>
...
<locale-encoding-mapping-list>
<locale-encoding-mapping>
<locale>ru</locale>
<encoding>koi8-r</encoding>
</locale-encoding-mapping>
</locale-encoding-mapping-list>
</web>
|
PS. Я использую описание в web.xml и server.xml и никаких фильтров с томкатом 5.0 и выше.
PPS. to phenom: небольшая поправка, забыл указать маппинг фильтра, поэтому у ildar_kh ничего с фильтрами и не случилось. Нужно так
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <web ...>
...
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>server.CharEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF8</param-value>
</init-param>
</filter>
...
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
...
<web/>
|
|
|
|
|