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:
El archivo JSP no se ha guardado mediante el editor (Eclipse, Netbeans, Bloc de notas, etc.) utilizando la codificación UTF-8.
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.
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:
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.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>
El navegador debe ser instruido para usar UTF-8 para codificar la respuesta HTTP. Esto se resolverá estableciendo el atributo de
charset
decharset
del encabezadoContent-Type
de la respuesta HTTP en UTF-8, que la solución ya ha hecho implícitamente para causar # 2.