Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/10/2004, 01:34
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Cita:
Iniciado por Cluster
En principio si... pero un \n por ejemplo es "multibyte" .. son dos .. uno para el \ y otro para el n si no me equivoco. Mejor que alguien lo confirme.

Un saludo,
No, solo es un caracter, el 0x0a (creo) en hexadecimal. El codigo ascii representa cada caracter por un byte, por lo que en ascii solo hay 256 caracteres. Pero como con todos los alfabetos como hay en la faz de la tierra, 256 caracteres no abarca todos los posibles caracteres. Asi que que se inventaron las paginas de codigo (charset, que debes especificar en la pagina web), donde un mismo codigo ascii representa distinto caracter dependiendo del charset seleccionado. Como solo podias especificar un charset, pues tenias un problema para mostrar caracteres de varios idiomas. Y por eso inventaron los codigos multibyte, el mas famoso el UTF-8 (que puedes especificar como charset). En esta codificacion, un caracter puede ocupar mas de un byte, pero ese caracter tiene un codigo fijo.

PHP es antiguo, y es anglosajon. El ascii lo inventaron los anglosajones, asi que no tiene ningun problema con los caracteres anglosajones. Por eso el soporte multibyte no es muy bueno en PHP (por no decir nulo ).

strlen() no devuelve bien el numero de caracteres de las cadenas multibytes, porque strlen() no entiende codigos multibyte. Para strlen(), un caracter multibyte ocupa tantos caracteres como bytes.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.