jsp spring-mvc utf-8 character-encoding spring-roo

jsp - El signo de £ se muestra como un diamante con un signo de interrogación en el medio



web xml encoding utf 8 (2)

Estoy creando una aplicación web que implica mostrar datos financieros al usuario. Al ser del Reino Unido y usar £ GBP por moneda, este personaje se usa mucho.

Sin embargo, de vez en cuando, £ se muestra como un diamante con un signo de interrogación en el centro, y en la página web arroja un carácter inválido UTF-8 byte 1 de 1 cadena de bytes.

¿Hay una forma UTF segura de mostrar el signo £ ? Aquí hay un ejemplo de lo que estoy haciendo en este momento:

"Rent Per Annum: £" + ''${tenant.currentRent}''


Una forma portátil de escribir esto en HTML como una entidad es £ o en el caso general por su código de carácter £ o £ £. De esta manera, su fuente es simple ASCII de 7 bits, por lo que básicamente es independiente de la codificación (ignorando esoterics como EBCDIC, etc.). Ver también http://www.fileformat.info/info/unicode/char/a3/index.htm


El problema particular puede tener al menos las siguientes una o más causas:

  1. El archivo JSP no se ha guardado mediante el editor (Eclipse, Netbeans, Bloc de notas, etc.) utilizando la codificación UTF-8.

  2. El servidor no usó UTF-8 para decodificar los caracteres producidos por el JSP en una secuencia de bytes antes de enviarlo a través de la red.

  3. El navegador no usó UTF-8 para codificar la secuencia de bytes desde la red a los caracteres.

Esos problemas se pueden resolver de la siguiente manera:

  1. Configure el editor para guardar archivos JSP usando UTF-8. No estoy familiarizado con STS, pero sé que está basado en Eclipse, por lo que probablemente sea el mismo que en Eclipse estándar. Vaya a Ventana> Preferencias> General> Espacio de trabajo> Codificación de archivo de texto y luego seleccione la codificación correcta en el menú desplegable.

    Una alternativa es usar la entidad HTML £ (como lo sugiere el otro contestador), de esta manera ya no es relevante en qué codificación se guarda el archivo JSP. Todos los personajes involucrados en el string £ son compatibles con la codificación ASCII básica ya (cada codificación decente utilizada en el mundo básicamente "amplía" ASCII, por lo que siempre funcionará) y el intérprete HTML (el webbrower) traducirá la entidad HTML al carácter correcto.

  2. El servidor debe ser instruido para usar UTF-8 para decodificar la salida JSP. Esto puede hacerlo en base a JSP por

    <%@page pageEncoding="UTF-8" %>

    o en toda la aplicación por

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

  3. El navegador debe ser instruido para usar UTF-8 para codificar la respuesta HTTP. Esto se resolverá estableciendo el atributo de charset de charset del encabezado Content-Type de la respuesta HTTP en UTF-8, que la solución ya ha hecho implícitamente para causar # 2.

Ver también: