mvc example español spring hibernate character-encoding tomcat6

español - spring mvc example



¿Cómo usar org.springframework.web.filter.CharacterEncodingFilter para corregir la codificación de caracteres? (5)

Necesito algo de ayuda.

Coloqué el fragmento de código a continuación en mi web.xml .

<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter </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>

y en mi server.xml :

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

Mis páginas jsp están codificadas como UTF-8 y mi tabla mysql está codificada como utf8_general_ci .

Mi problema es que cada vez que guardo un ñ se convierte en ? .

Cuando intenté guardar manualmente ñ en el terminal mysql, su guardado es correcto. Sospecho que el problema está dentro de mi servidor o mi programa. Por favor ayuda.


Asegúrate de tener el siguiente fragmento en tu jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" language="java" %>

y también asegúrese de que encodingFilter sea ​​el primer filtro en el archivo web.xml


He intentado con éxito con esto en web.xml !

<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>


Mi solución, utilizando Spring (3.2.x) AnnotationConfigWebApplicationContext, basado en Spring Framework Reference:

public class StudentApplicationConfig extends AbstractDispatcherServletInitializer { @Override protected WebApplicationContext createServletApplicationContext() { AnnotationConfigWebApplicationContext dispatcherContext = new AnnotationConfigWebApplicationContext(); dispatcherContext.register(DispatcherConfig.class); return dispatcherContext; } @Override protected String[] getServletMappings() { return new String[] { "/" }; } @Override protected WebApplicationContext createRootApplicationContext() { AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext(); return appContext; } @Override protected Filter[] getServletFilters() { Filter[] filters; CharacterEncodingFilter encFilter; HiddenHttpMethodFilter httpMethodFilter = new HiddenHttpMethodFilter(); encFilter = new CharacterEncodingFilter(); encFilter.setEncoding("UTF-8"); encFilter.setForceEncoding(true); filters = new Filter[] {httpMethodFilter, encFilter}; return filters; }


Para trabajar en la bota de primavera puedes usar

@Bean public FilterRegistrationBean filterRegistrationBean() { CharacterEncodingFilter filter = new CharacterEncodingFilter(); filter.setEncoding("UTF-8"); FilterRegistrationBean registrationBean = new FilterRegistrationBean(); registrationBean.setFilter(filter); registrationBean.addUrlPatterns("/*"); return registrationBean; }

otra respuesta


puede ser poco tarde, pero es mejor configurarlo en tomcat conf / web.xml (o para proyectos en web.xml)

<filter> <filter-name>SetCharacterEncoding</filter-name> <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>SetCharacterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

Consulte http://wiki.apache.org/tomcat/FAQ/CharacterEncoding o web.xml tomcat

O para embarcadero como este:

public class StartEmbeddedJetty{ public static void main(String[] args) throws Exception { Server server = new Server(8080); ServletContextHandler sch = new ServletContextHandler(); sch.addFilter(CharacterEncodingFilter .class, "/*", EnumSet.of(DispatcherType.REQUEST)); ... server.start(); server.join(); } public static class CharacterEncodingFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { // set encoding to utf-8 req.setCharacterEncoding("UTF-8"); res.setCharacterEncoding("UTF-8"); } @Override public void init(FilterConfig arg0) throws ServletException { /* empty */ } @Override public void destroy() { /* empty */ } }

}