LINUX.ORG.RU

Кодировка jsp страниц


0

1

Само собой так все работает

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
но хочу чтобы фильтром во всех страницах эту строку добавляло, делаю в doFilter
aResponse.setContentType("text/html;charset=UTF-8");
aRequest.setCharacterEncoding("UTF-8");
контекст с кодировкой ставится, НО написанная в тегах кириллица выходит иероглифами (( не пойму чего не хватает в фильтре

У меня есть head.jsp, который начинается со строчки

<%@page language="java" contentType="text/html" pageEncoding="UTF-8"%>
А все остальные jsp начнаются со строчки:
<jsp:include page="head.jsp" />
А решение с фильтрами тоже есть, оно гуглится.

CYB3R ★★★★★ ()
Ответ на: комментарий от CYB3R

А решение с фильтрами тоже есть, оно гуглится.

да уже искал, пишут что не получится так (( либо я чего в английском не понимаю. фильтр просто уже есть, не хочется городить дополнительного кода.

wolverin ()
Ответ на: комментарий от wolverin

и все же наверное не получится, т.к. первое это деректива, с которой собрана страница, а второе это контекст ответа, поэтому и не получается увидеть кирилицу уже написанную в исходнике jsp.

wolverin ()
Ответ на: комментарий от wolverin

Кстати, а попробуй ещё одну строчку в свой фильтр добавить:

aResponse.setContentType("text/html;charset=UTF-8");
aResponse.setCharacterEncoding("UTF-8");
aRequest.setCharacterEncoding("UTF-8");

CYB3R ★★★★★ ()
Ответ на: комментарий от wolverin

Да исходников там две строчки должно быть.

public class EncodingFilter implements Filter {
	private String encoding = "UTF-8";

	public void doFilter(ServletRequest request,
	ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
		request.setCharacterEncoding(encoding);
		filterChain.doFilter(request, response);
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		String encodingParam = filterConfig.getInitParameter("encoding");
		if (encodingParam != null) {
			encoding = encodingParam;
		}
	}

	public void destroy() {

	}
}
web.xml:
<filter>
	<filter-name>EncodingFilter</filter-name>
	<filter-class>
		net.einwaller.filters.EncodingFilter
	</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
</filter>

<filter-mapping>
	<filter-name>EncodingFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
Взято отсюда.

CYB3R ★★★★★ ()
Последнее исправление: CYB3R (всего исправлений: 2)
Ответ на: комментарий от CYB3R

CYB3R

пробовал добавлять, в респонзе и в реквесте вижу кирилицу, а то что написано в самом JSP иероглифы. фильтр у меня точно такой же практически.

wolverin ()
Ответ на: комментарий от wolverin

Возможно, ещё и в конфигах сервера (у тебя ведь tomcat?) где-то указывается кодировка.

CYB3R ★★★★★ ()
Ответ на: комментарий от CYB3R

у тебя ведь tomcat?

не, GlassFish. Я видел, что в томкате как то задают кодировку в конфигах, но зачем!? не понимаю.

wolverin ()
Ответ на: комментарий от wolverin

Это кодировка самих URL'ов, чтобы все переданные сервлету/jsp'шке параметры были читаемыми. По дефолту там ISO 8859-1, все меняют на UTF-8.

CYB3R ★★★★★ ()

у <%@ page есть ещё аттрибут pageEncoding, и есть предположение, что по умолчанию он ISO-8859-1. а когда выставляется contentType - он тоже меняется.

maloi ★★★★★ ()
Ответ на: комментарий от maloi

maloi

с дерективой все понятно и работает, хочется тоже самое сделать в фильтре, т.к. он уже есть и прописывает дополнительную информацию в заголовок.

с конфигом еще не успел разобраться

wolverin ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.