Solventando problemas de codificación

Contactar con el profesor

Configuraremos el cliente para recibir y enviar la información en UTF-8.

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

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

Definiendo la codificación de todas las peticiones

Cuando se envía la petición por POST, el servidor TOMCAT no es capaz de saber cuál es el formato de codificación del cliente. Como posible solución está crear un filtro para que todas las peticiones pasen por él y dónde se especifique que sean en formato UTF-8.

UTF8Filter.java
public class UTF8Filter implements Filter {
	private String encoding;
	//Recogemos el tipo de codificación definido en el web.xml
	public void init( FilterConfig filterConfig ) throws ServletException {
		encoding = filterConfig.getInitParameter( "requestEncoding" );
	}
	// Metemos en la request el formato de codificacion UTF-8
	public void doFilter( ServletRequest request, ServletResponse response, FilterChain fc )throws IOException, ServletException {
		request.setCharacterEncoding( encoding );
		fc.doFilter( request, response );
	}
	public void destroy() {}
}
web.xml

…
<filter>
	<filter-name>UTF8Filter</filter-name>
	<filter-class>com.pablomonteserin.filter.UTF8Filter</filter-class>
          <init-param>
		<param-name>requestEncoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>UTF8Filter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

Configurando el servidor para trabajar con UTF8

En Tomcat por defecto se especifica el formato de codificación ISO-8859-1. Para cambiar la codificación tenemos que modificar el archivo server.xml que se encuentra en:

DIRECTORIO_INSTALACION_TOMCAT\conf\server.xml

Añadimos el atributo URIEncoding=“UTF-8” en la etiqueta <Connector port=”8080″ … />

<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25"     maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100"     connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
← Ejercicio calculadora
Modelo 5 capas →

Aviso Legal | Política de privacidad