2012-08-31 10 views
7

Witam Mam pole testowe, w którym chcę umieścić test nie w języku angielskim (na przykład na rosyjski) , ale w mojej klasie działania otrzymuję zamiast tekstu tylko ?????????. ja próbuje napisać prosty filtr, który opisany Parameters charset conversion in struts2Jak zmienić zestaw znaków w struts2 na utf-8

ale nadal nie działa .. może ktoś mi pomóc

aktualizacja mam to enter image description here

<s:textfield key="index.login" name="login" /> 

chcę umieść w nim test w języku rosyjskim, a następnie wyślij go do mojej akcji., ale w mojej klasie akcji otrzymam zamiast tekstu tylko ?????????., aby rozwiązać ten problem. Aby zmienić kodowanie w utf8 zamiast win1251.

+0

Co dokładnie próbowałeś? Musisz wyjaśnić, co dokładnie próbujesz zrobić. Podany link już jest ** już ** przy użyciu kodowania UTF-8, więc to pytanie nie ma sensu. Muszę zgodzić się z tym pytaniem za to, że jest to jedno z najgorszych pytań, jakie widziałem od bardzo dawna. –

+0

Co oznacza kodowanie strony? Musi to być <% @ strona language = "java" contentType = "text/html; charset = UTF-8" pageEncoding = "UTF-8"%> Pliki .java też powinny być UTF-8. – gooogenot

Odpowiedz

11

Utwórz filtr:

import java.io.IOException; 

import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 

public class CharacterEncodingFilter implements Filter { 

    @Override 
    public void init(FilterConfig filterConfig) 
      throws ServletException { 
    } 

    @Override 
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) 
      throws IOException, ServletException { 
     servletRequest.setCharacterEncoding("UTF-8"); 
     servletResponse.setContentType("text/html; charset=UTF-8"); 
     filterChain.doFilter(servletRequest, servletResponse); 
    } 

    @Override 
    public void destroy() { 

    } 
} 

stwierdzenie go do web.xml:

<filter> 
    <filter-name>CharacterEncodingFilter</filter-name> 
    <filter-class>your.package.filter.CharacterEncodingFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>CharacterEncodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

I your're dobrze iść. Upewnij się także, że każda twoja strona JSP zawiera: <%@ page contentType="text/html;charset=UTF-8" language="java" %>. Jeśli twoja aplikacja działa na tomcat, upewnij się, że dodasz atrybut URIEncoding="UTF-8" do swojego elementu Connector.

+0

nie działa, wysyłaj ??????? –

4

Jeśli trzeba wymusić JSP na UTF-8 można napisać następujących w web.xml:

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

(nie mogę wypowiedzieć się na temat odpowiedzi poprzednim)

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

Ok dla web.xml> 2.3

Nie jestem pewien, czy w 2012 roku jeszcze nie istnieje, ale zadbaj o to, aby ten element był dostępne tylko dla web.xml> 2.4 (ten element nie istnieje w wersji 2.3 http://java.sun.com/dtd/web-app_2_3.dtd).

Powiązane problemy