utf8

Tabla de codificaciones de caracteres entre ANSI, UTF-8, Javascript, HTML

ene-virguilillaCuando hacemos una página web en utf8, al escribir una cadena de texto en javascript que contenga acentos, tildes, eñes, signos de interrogación y demás caracteres considerados especiales, se pintara de una forma extraña en el html. Esto es porque javascript tiene su propio sistema de codificación, al igual que el html. A continuación os dejo una tabla con los principales caracteres que se utilizan, ya que es útil tenerlos a mano para poder escribirlos:

ANSI UTF-8 JAVASCRIPT HTML
Á Á u00c1 Á
á á u00e1 á
É Ã‰ u00c9 É
é é u00e9 é
Í Ã u00cd Í
í í u00ed í
Ó Ã“ u00d3 Ó
ó ó u00f3 ó
Ú Ãš u00da Ú
ú ú u00fa ú
Ñ Ã‘ u00d1 Ñ
ñ ñ u00f1 ñ
¿ ¿ u00bf ¿

Y después de esta tabla a modo de apunte, os dejo la tabla completa de codificación de caracteres como eñes, acentos, tildes y demás caracteres entre ANSI, UTF8, Javascript y HTML:

ANSI UTF-8 JAVASCRIPT HTML
 u00a0  
¡ ¡ u00a1 ¡
¢ ¢ u00a2 ¢
£ £ u00a3 £
¤ ¤ u00a4 ¤
¥ Â¥ u00a5 ¥
¦ ¦ u00a6 ¦
§ § u00a7 §
¨ ¨ u00a8 ¨
© © u00a9 ©
ª ª u00aa ª
« « u00ab «
¬ ¬ u00ac ¬
­ ­ u00ad ­
® ® u00ae ®
¯ ¯ u00af ¯
° ° u00b0 °
± ± u00b1 ±
² ² u00b2 ²
³ ³ u00b3 ³
´ ´ u00b4 ´
µ µ u00b5 µ
¶ u00b6 ¶
· · u00b7 ·
¸ ¸ u00b8 ¸
¹ ¹ u00b9 ¹
º º u00ba º
» » u00bb »
¼ ¼ u00bc ¼
½ ½ u00bd ½
¾ ¾ u00be ¾
¿ ¿ u00bf ¿
À À u00c0 À
Á Á u00c1 Á
 Â u00c2 Â
à Ã u00c3 Ã
Ä Ã„ u00c4 Ä
Å Ã… u00c5 Å
Æ Ã† u00c6 Æ
Ç Ã‡ u00c7 Ç
È Ãˆ u00c8 È
É Ã‰ u00c9 É
Ê ÃŠ u00ca Ê
Ë Ã‹ u00cb Ë
Ì ÃŒ u00cc Ì
Í Ã u00cd Í
Î ÃŽ u00ce Î
Ï Ã u00cf Ï
РÐ u00d0 Ð
Ñ Ã‘ u00d1 Ñ
Ò Ã’ u00d2 Ò
Ó Ã“ u00d3 Ó
Ô Ã” u00d4 Ô
Õ Ã• u00d5 Õ
Ö Ã– u00d6 Ö
× Ã— u00d7 ×
Ø Ã˜ u00d8 Ø
٠Ù u00d9 Ù
Ú Ãš u00da Ú
Û Ã› u00db Û
Ü Ãœ u00dc Ü
Ý Ã u00dd Ý
Þ Ãž u00de Þ
ß ÃŸ u00df ß
à Ã u00e0 à
á á u00e1 á
â â u00e2 â
ã ã u00e3 ã
ä ä u00e4 ä
å Ã¥ u00e5 å
æ æ u00e6 æ
ç ç u00e7 ç
è è u00e8 è
é é u00e9 é
ê ê u00ea ê
ë ë u00eb ë
ì ì u00ec ì
í í u00ed í
î î u00ee î
ï ï u00ef ï
ð ð u00f0 ð
ñ ñ u00f1 ñ
ò ò u00f2 ò
ó ó u00f3 ó
ô ô u00f4 ô
õ õ u00f5 õ
ö ö u00f6 ö
÷ ÷ u00f7 ÷
ø ø u00f8 ø
ù ù u00f9 ù
ú ú u00fa ú
û û u00fb û
ü ü u00fc ü
ý ý u00fd ý
þ þ u00fe þ
ÿ ÿ u00ff ÿ

Espero que os sirva de ayuda tanto como a mi.

Problema de codificación UTF8, Internet Explorer 8 y PHP

El otro día tuve que tocar una web antigua de un compañero que estaba hecha en PHP4. Al abrir los archivos para hacer unos cambios que me pidieron, estos estaban codificados en vete tu a saber que codificación, así que al hacer cambios se estaba autocodificando todo en UTF8. Al hacer pruebas, todo va bien, en Chrome, Safari y Firefox se ve todo estupendamente, incluso en Internet Explorer 9 se veia bien, eso si, no sin antes añadir en la página el meta indicando que está codificada en UTF8. El problema es que cuando abres la misma web en Internet Explorer 8, este no muestra bien la codificación y esto es porque Internet Explorer 8 no lee bien el charset del meta de Content-Type y por tanto toma la codificación por defecto.

Una nota interesante es que Internet Explorer 8, aunque no reconoce el meta de Content-Type, si que reconoce el encabezado Content-Type que se envia desde el servidor en el protocolo http, por lo que, siguiendo unos sencillos pasos podemos paliar este problema y migrar esos proyectos antiguos que puedan haber por ahí a editores mas modernos.

  1. Recodificar el proyecto. Podemos utilizar un editor que guarde los archivos por defecto en UTF8 o hacernos de algún script que lo haga por nosotros.
  2. Añadir el meta de UTF8. En todas las páginas publicas, debemos añadir un meta de UTF8 y si ya existiera con el típico ISO-8859-1, cambiarlo a UTF8. Algo como <meta http-equiv=»Content-Type» content=»text/html; charset=UTF-8″ />
  3. Por último y no menos importante, devolver el encabezado de http con el Content-Type en UTF-8. Con algo como esto: header(‘Content-type: text/html; charset=utf-8’);

El código resultante sería en nuestro html:

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

Y nuestro php, antes de devolver nada de texto, pintar la cabecera de http:

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

Por último comentaros que w3c recomienda en HTML5 que el meta de Content-Type se ponga como el primer elemento dentro del head antes incluso que el title para que se pueda interpretar correctamente la página.

Scroll al inicio