Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/04/2009, 21:46
Avatar de Dude--
Dude--
 
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 20 años, 8 meses
Puntos: 4
Respuesta: No me lo puedo creer

Extrayendo partes interesantes de un artículo en francés que alguien del foro cito previamente http://electron-libre.fassnet.net/utf8.php podemos decir que:

Las diferencia más básica entre ISO y UTF, es que el primero ocupa menos espacio al representar una unidad o caracter, por esa misma razón abarca muchos menos caracteres que UTF, el cual ocupa un tamaño mucho mayor para cada unidad. Otra diferencia sustancial es que ambos son estándares de codificación de caracteres, solo que dado que utilizan distintas formas de tratar la información surgen los problemas, pues uno no puede interpretar los caracteres que el otro ha definido como especiales (por ejemplo tildes) de la manera correcta y viceversa.

La versiones de php iniciales tenían un core que funcionaba completamente bajo ISO, luego empezaron a soportar UTF y por lo visto en php6 pasará a ser completamente Unicode.

Problemas típicos:
- Cuando aparecen caracteres del tipo "Ã ©", "Ã ®" "Ã", significa que los datos fueron guardados en UTF-8 pero el navegador intenta interpretarlos como ISO.

- Cuando aparecen caracteres tipo rombo negro con símbolo de interrogación dentro significa que los datos fueron guardados en ISO y UTF-8 no consigue interpretarlos de forma correcta.

Por lo tanto:
Si los datos fueron codificados por la página comprueba el formato de archivo de tu editor de texto (o programa que uses para escribir el código), la configuración del cabecero de apache y el meta tag "charset".

Si los problemas vienen de la base de datos verifica el formato de almacenamiento y los metodos de lectura e inserción (y SET NAMES charset).

Si los datos vienen de fuera (web services, RSS, ...) recuerda convertir las cadenas o strings (utf8_encode(), utf8_decode() y fuciones del modulo "iconv").

*Esto último quiere decir que quienes utilizan utf8_encode() y utf8_decode() para intentar solucionar los problemas antes mencionados con los caracteres (salvo en el último caso, obviamente) han estado yendo por el camino equivocado, ya que en realidad estas funciones sirven para transformar datos ISO en UTF, por lo que no es la manera más adecuada de solucionar los problemas, sería como poner parches a un pantalón en vez de coserlo.
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."

Última edición por Dude--; 01/04/2009 a las 21:54