2010-12-07 10 views
38

Estoy tratando de mostrar el símbolo de libra en HTML (desde PHP) pero todo lo que obtengo es un símbolo con un signo de interrogación.¿Por qué no puedo mostrar un símbolo de libra (£) en HTML?

Las siguientes son cosas que he intentado.

En PHP:

header('Content-type: text/html; charset=utf-8'); 

En el HTML, poner esto en la etiqueta de la cabeza:

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

he intentado mostrar que el uso de una función de JavaScript, que la convierte en:

&amp;#65533; 

Supongo que sería útil si supiera lo que estaba haciendo ... pero supongo que es por eso que estoy haciendo esta pregunta :)

+22

+1 para la última línea solo –

+0

Por favor, muestre algunos códigos. – Moshe

+6

¿Has probado '£'? – sje397

Respuesta

14

Conjetura educada: tiene un signo de libra con codificación ISO-8859-1 en una página con codificación UTF-8.

Asegúrate de que tus datos estén en la codificación correcta y todo va a funcionar bien.

10

¿Has intentado mostrar un &pound;?

Here es una lista abrumadora.

+2

Si bien es probable que esto lo solucione, no aborda la raíz del problema, por lo que Sugiero la respuesta de Pekka en su lugar. –

+0

@Andreas Bonini: De acuerdo :-) – nc3b

+0

£ funciona, pero todavía quiero entender por qué no está funcionando. No sé si importa, pero estoy haciendo esto a través de JavaScript (estableciendo la propiedad innerHTML de una etiqueta div) –

3

Puede intentar usar &pound; o &#163; en lugar de incrustar el carácter directamente; si lo inserta directamente, es más probable que se encuentre con problemas de codificación en los que su editor guarda el archivo ISO-8859-1, pero se interpreta como UTF-8, o viceversa.

Si desea incrustarlo (u otros caracteres Unicode) directamente, asegúrese de guardar realmente su archivo como UTF-8, y configure la codificación como lo hizo con el encabezado Content-Type. Cuando obtenga el archivo del servidor, asegúrese de que el encabezado esté presente y sea correcto, y de que el servidor web no haya transcodificado el archivo.

2

o por otras equivalentes de código try:

&#163; 
&pound; 
1

Tendrá que guardar el archivo de script PHP en codificación UTF-8, y dejar el <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> en el código HTML.

Para el editor de texto, recomiendo Notepad++, porque puede detectar y mostrar la codificación real del archivo (en la esquina inferior derecha del editor), y puede convertirlo también.

16

Use &#163;. Yo tenía el mismo problema y lo resolvió usando jQuery:

$(this).text('&amp;#163;'); 
  • Si intenta esto y no funciona, basta con cambiar los métodos de jQuery,
$(this).html('&amp;#163;'); 
  • Este siempre trabaja en todos los contextos ...
+0

Gracias por la edición, simplemente lo hice frente al tiempo y muy rápido ... Lo importante es que la idea viene – Rak90

11

primero: el símbolo de la libra es un char "especial" en la codificación UTF-8 (a intentar guardar £ $ en un iso-8859-1 (o iso-8859-15) de archivos y obtendrá una cuando se codifica utilizando cabecera)

2do: cambie su codificación a utf8 del archivo. hay muchos métodos para hacerlo. bloc de notas y bloc de notas ++ son grandes sugestiones.

3º: use ob_start(); (en php) ANTES DE REALIZAR CUALQUIER SALIDA si obtiene errores de codificación extraños, como perder la codificación a veces. y SÍ, ¡esto lo resuelve! Este tipo de errores ocurre cuando una página está codificada en windows-1252 (ANSI), ASCII, iso-8859-1 (5) y luego tiene todas las demás en utf8. esto es un error terrible y puede causar cosas raras como session_start(); no funciona.

4º: otras soluciones PHP:

utf8_encode('£'); 
htmlentities('£'); 
echo '&amp;pound;'; 

5º: soluciones javascript:

document.getElementById('id_goes_here').innerText.replace('£','&amp;pound;'); 
document.getElementById('id_goes_here').innerText.replace('£',"\u00A3"); 
$(this).html().replace('£','&amp;pound;'); //jquery 
$(this).html().replace('£',"\u00A3"); //jquery 
String.fromCharCode('163'); 

usted debe enviar £, por lo que se compromete a reparar el punto de código codificado roto. por favor, ¡evita estas soluciones! use php! estas soluciones solo muestran cómo 'arreglar' el error, y el último solo para crear el char bien codificado.

1

Esto funciona en todos los Chrome, IE, Firefox.

la base de datos> Mesa> tipo de campo .por ejemplo de la columna símbolo para varchar(2) utf8_bin código PHP:

$symbol = '£'; 
echo mb_convert_encoding($symbol, 'UTF-8', 'HTML-ENTITIES'); 
or 
html_entity_decode($symbol, ENT_NOQUOTES, 'UTF-8'); 

y también asegurarse de establecer la codificación HTML o XML para encoding = "UTF-8"

Nota: Usted debe asegurarse de que la base de datos, tipo de documento y el código php todos tienen una misma codificación

Cómo siempre la mejor solución sería utilizar &pound;

Cuestiones relacionadas