2012-08-31 13 views
7

Ciao Ho un campo di test in cui voglio mettere il test non in inglese (ad esempio in russo) ma nella mia classe di azioni ottengo invece del solo testo ?????????. ho cercando di scrivere semplice filtro che ha descritto Parameters charset conversion in struts2Come cambiare il charset in struts2 a utf-8

ma ancora non funziona .. qualcuno può aiutarmi a

aggiornamento ho questo enter image description here

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

voglio metti la prova in lingua russa e poi la mando al mio action.but nella mia classe di azione ottengo invece del solo testo ?????????. per risolvere questo problema I n per cambiare charset in utf8 invece di win1251.

+0

Che cosa hai provato esattamente? Devi spiegare cosa stai cercando di fare esattamente. Il link che hai fornito è già ** ** utilizzando la codifica UTF-8, quindi questa domanda non ha senso. Devo sottopormi a questa domanda per essere una delle domande più ricercate che ho visto da molto tempo. –

+0

Che cosa codifica la pagina? Deve essere <% @ page language = "java" contentType = "text/html; charset = UTF-8" pageEncoding = "UTF-8"%> Anche i file .java devono essere UTF-8. – gooogenot

risposta

11

Creare un filtro:

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() { 

    } 
} 

dichiararla nel vostro 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> 

E vi trovate bene ad andare. Assicurati inoltre che ogni tua pagina JSP contenga: <%@ page contentType="text/html;charset=UTF-8" language="java" %>. Se la tua applicazione è in esecuzione su tomcat, assicurati di aggiungere l'attributo URIEncoding="UTF-8" all'elemento Connector.

+0

non funziona mandare ??????? –

4

Se avete bisogno di forzare jsp a UTF-8 è possibile scrivere quanto segue in web.xml:

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

(non posso commentare sulla risposta previus)

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

Ok per web.xml> 2.3

Non sono sicuro che nel 2012 non esiste ancora, ma fai attenzione che questo elemento sia disponibile solo per web.xml> 2.4 (quell'elemento non esiste in 2.3 http://java.sun.com/dtd/web-app_2_3.dtd).

Problemi correlati