que mvc español spring-mvc character-encoding html-form

español - Codificación UTF-8 en Spring MVC, problema con FORMS



ã a ñ (3)

Resolví esto.

Ese filtro en web.xml debe ser el primer filtro en el archivo.

Tengo esto en web.xml

<filter> <filter-name>encoding-filter</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>encoding-filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

y en la parte superior de file.jsp tengo esto:

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

en <head> esto:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

y los caracteres distintos de latin-1 establecidos desde FORM con método POST aún no son correctos.


Tenga en cuenta que esto funciona solo para solicitudes POST . Si desea codificar también solicitudes GET (es decir, enlaces con <a href=...> ), deberá modificar el archivo server.xml de su servidor, agregando URIEncoding="UTF-8" useBodyEncodingForURI="true" atributos en la etiqueta <Connector> .

Ver: http://wiki.apache.org/tomcat/FAQ/CharacterEncoding


Tuve un problema similar. Cuando publico un formulario y lo guardo en DB, se inserta como ?????? pero si lo inserto manualmente en DB usando MySQL WorkBench, funciona bien.

Pensé que el problema está solo en la codificación de solicitud http. Por lo tanto, casi implementé todas las recomendaciones que encontré sobre este tema, como change server.xml , agregar filter to web.xml y cambiar las configuraciones en el archivo de configuración de MySQL my.ini, pero eso no soluciona mi problema.

El problema se debió a dos cosas, la codificación de solicitud http y la conexión JDBC . Por alguna razón, MySQL acepta datos como ISO-8859-1 no como UTF-8.

Por lo tanto, he revertido todos los cambios y he hecho dos cambios a continuación: Cambie Tomcat server.xml de la siguiente manera:

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

Cambie las propiedades de conexión Jdbc de la siguiente manera:

jdbc.driver_class=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost/dB_Name?useUnicode=yes&characterEncoding=UTF-8 jdbc.username=root jdbc.password

La clave de la solución aquí es agregar useUnicode = yes y characterEncoding = UTF-8

Agregue un filtro como @jbb en ** web.xml : **

<filter> <filter-name>encoding-filter</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>encoding-filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

Si se utiliza Thymeleaf, cambie viewResolver y TemplateResolver de la siguiente manera:

viewResolver.setCharacterEncoding("UTF-8"); viewResolver.setContentType("text/html; charset=UTF-8"); templateResolver.setCharacterEncoding("UTF-8");