2015-04-29 2 views
5

Я включил <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> на одну страницу jsp и правильно отобразил французских символов. Но я хочу включить кодировку страницы на все страницы jsp. В web.xml я включенКак включить кодировку страницы на все страницы jsp

<jsp-config> 
     <jsp-property-group> 
     <url-pattern>*.jsp</url-pattern> 
     <page-encoding>UTF-8</page-encoding> 
     </jsp-property-group> 
</jsp-config> 

, но он будет работать для tomcat7 я использую Tomcat6.

Есть ли другие решения для этого?

+0

ваша проблема со значениями из вашей серверной? статический html-контент в вашем JSP? параметры? – Preuk

ответ

0

Вы можете использовать метатег вместо добавления кодировки страницы во весь файл jsp или в web.xml. Если у вас есть общий файл .jsp включают

+0

можно ли дать мне подробное объяснение? –

+1

Jessica

+0

вы можете выбрать любую кодировку, которая будет подходящей. – Jessica

0

Если параметры не являются UTF-8 кодируются при использовании Tomcat, попытайтесь настроить конфигурацию соединителя в server.xml Tomcat как это:
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />

+1

, который не собирается делать то, что задает пользователь – MaVRoSCy

+0

yep it did not work ... –

1

Вы можете определить новый фильтр в вашем web.xml и измените свои ответы там.

Например, вы могли бы поставить это в web.xml:

<filter> 
    <filter-name>encoding</filter-name> 
    <filter-class>com.example.EncodingFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>encoding</filter-name> 
    <url-pattern>/*.jsp</url-pattern> 
    <!-- or any pattern you like to excluse non-jsp resources --> 
</filter-mapping> 

И создать com.example.EncodingFilter класс вроде этого:

public class EncodingFilter implements javax.servlet.Filter { 

    // init, destroy, etc. implementation 

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
      throws IOException, ServletException 
    { 
     response.setCharacterEncoding("utf-8"); 
     chain.doFilter(request, response); // pass request to next filter 
    } 
} 

Вы можете, кроме того, добавить тесты вокруг setCharacterEncoding() вызова для фильтрации только определенный URI или исключить, например, не-HTML jsp или конкретный параметр, например JSP, выводящий PDF-код, если указан параметр URL format=PDF:

if (!request.getQueryString().contains("format=PDF") { 
     response.setCharacterEncoding("utf-8"); 
} 
chain.doFilter(request, response); // pass request to next filter 
+2

ваш ответ правильный, но если бы вы могли немного разработать, было бы лучше. – MaVRoSCy

+1

@MaVRoSCy должно быть лучше сейчас – Preuk

+1

yeap! это отлично – MaVRoSCy

0

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

public void doFilter(ServletRequest request,ServletResponse response, FilterChain filterChain) throws IOException, ServletException { 
      request.setCharacterEncoding(encoding); 
    //    response.setContentType("text/html;charset=UTF-8"); 
        response.setCharacterEncoding(encoding); 
      filterChain.doFilter(request, response); 

     } 

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

Регистрация этот фильтр в web.xml

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