Codificaciones caracteres (es)

download Codificaciones caracteres (es)

If you can't read please download the document

description

Explicación de qué es una codificación de caracteres y propiedades de algunas de ellas. También cosas a tener en cuenta si se escoje UTF-8.

Transcript of Codificaciones caracteres (es)

  • 1. PHP Codificaciones de Caracteres (o cmo una mquina entiende las letras)

2. PHP

  • Cuando un programa abre un archivo, lee todos los bytes de ese archivo y muestra una representacin legible para los humanos: las letras, nmeros, smbolos y otros caracteres

3. Cmo sabe que si se encuentra el byte 01100001 debe mostrar una 'a' ? 4. Cmo sabe que cuando apretamos la letra 'a' en el teclado, l debe escribir el byte 01100001 en el archivo?

  • Por la codificacin de caracteres que est usando!

5. PHP

  • Los ordenadores no ven letras, ven 0s y 1s

6. 1 bit puede tener 2 valores: 0 y 1 7. 8 bits son 1 byte 8. 1 byte puede tener 256 valores diferentes (2 8 )

  • Son muy pocos para representar todos los caracteres posibles! (latinos, cirlicos, japoneses, koreanos, turco, hebreo, rabe, hindi...)

9. PHP Cmo funcionaba el mundo hasta ahora? 10. PHP

  • ISO-8859-1(latin-1)
  • Es la codificacin de caracteres usada en gran parte de europa y amrica (muy similar a ANSI o Windows-1252, pero no igual)

11. Contiene a-z A-Z 0-9 y casi todos los smbolos de uso habitual, excepto el 12. 1 byte por carcter 13. Slo puede representar 256 carcteres diferentes 14. Limitado 15. PHP

  • ISO-8859-15(latin-9)
  • Prcticamente idntico a ISO-8859-1, con algunas variaciones

16. Incluye el EUC-JP(unix) oShift JIS(windows)

  • Para representar caracteres japoneses, chinos y/o koreanos, dependiendo del S.O.

ISO-8859-2(latin-2)

  • Europa Central y Este: bosnio, croata, checo, hngaro...

17. PHP

  • ISO-8859-3 (latin-3)
  • Europa del sur: Turco, Esperanto (?) y malts

PASCII

  • Estndar indio para lenguajes basados en escritura rabe (cachemir, urdu, persa, sindhi)

ISO-8859-8

  • Hebreo

Y an hay ms! 18. PHP BASTAAAAAAAAAAAAAAA!!!!!! 19. PHP Ejem... perdn... sigamos... 20. PHP

  • Unicode
  • Su objetivo es conseguir tener una codificacin de caracteres universal

21. An as, hay varias codificaciones que han salido a partir del esfuerzo del Unicode Consortium

  • UTF-7, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4

Casi todos los idiomas (excepto Klingon y algn otro) 22. Caracteres simblicos () 23. Otros... 24. PHP

  • UTF-8
  • Codificacin variable, un caracter se puede representar con 1, 2, 3 o 4 bytes

25. Los primeros 127 caracteres son iguales a los de ISO-8859-1/ISO-8859-15 (letras sin acentos, nmeros, smbolos comunes) y requieren nicamente un byte 26. Otros caracteres requieren entre 2 y 4 bytes 27. PHP

  • UTF-8... conBOMo sin BOM?
  • BOM => Byte Order Mark

28. Marca al principio del archivo que dice en que orden se encuentran los bytes de caracteres multi-byte 29. Diferentes arquitecturas de ordenadores leen los bytes en diferente orden

  • Little Endian => bytes de mayor peso primero

30. Big Endian => bytes de menor peso primero Como Unicode tiene varias codificaciones multi-byte, se usa el BOM al principio de cada archivo 31. PHP

  • UTF-8... conBOMo sin BOM? (II)
  • En UTF-16 o UTF-32 es necesario

32. En UTF-8 no 33. En PHP, nos puede provocar muchos quebraderos de cabeza tener el BOM al principio de nuestros archivos

  • Guardar siempre el archivo como UTF-8 sin BOM

34. PHP

  • Por qu debemos escoger UTF-8?
  • Es el futuro, poco a poco todo (ya sea el Sistema Operativo o sus aplicaciones) tiende a UTF-8. Empezar un nuevo proyecto en ISO-8859-15 es vivir anclado al pasado.(no simplemente es por estar a la moda, es por que es mejor cambiar a utf-8... que s, de verdad, te lo juro por Snoopy)

35. Si queremos tener nuestra aplicacin en varios idiomas, es la nica opcin que nos har mantener la cordura (ya que la otra opcin es jugar con diferentes codificaciones) 36. PHP 6 internamente trabajar con Unicode (UTF-8) 37. PHP

  • Cmo modificamos nuestras pginas para que se vean correctamente con UTF-8?
  • Opcin 1. Modificar configuracin Apache(en el archivo principal, en seccin o quizs en .htaccess)
  • AddDefaultCharset UTF-8

Opcin 2. En el cdigo de nuestra aplicacin PHP

  • header("Content-Type: text/html;charset=utf8");

Opcin 3. En el HTML

38. PHP

  • Los textos que guardemos en la base de datos tambin debern estar en la misma codificacin que el resto de la pgina.

39. Al hacer la conexin a la base de datos hemos de especificar la codificacin(una de las dos, para mysql) :

  • $pdo->query('SET NAMES 'utf8');

40. $mysqli->set_charset('utf8'); 41. PHP

  • Mis pginas se ven mal!
  • Aparecen smbolos raros donde debiera haber acentos, o
  • Si se ve o => Archivo codificado latin-1, visto como UTF-8

42. Si se ven dos caracteres raros como => Archivo codificado UTF-8, visto como latin-1 43. PHP

  • Mis pginas se ven bien!
  • Enhorabuena!

44. Slo te queda comprobar que ests usando UTF-8. En tu navegador, comprueba el men "Ver -> Codificacin de caracteres" o similar