Inicio > PHP > Cadenas de caracteres multibyte

CADENAS DE CARACTERES MULTIBYTE

14/10/2016PHP

 

Normalmente cualquier idioma puede ser representado por una referencia uno a uno a un valor de 8 bits, pero también hay bastantes idiomas que requieren tantos caracteres que no pueden ser representados dentro del rango que un byte pueda codificar. Los esquemas de codificación multibyte se desarrollaron para poderusar más de 256 caracteres en el sistema de codificación regular a nivel de bits.
Cuando se manipulan cadenas de caracteres (trim, split, splice, etc.) en una codificación multibyte, es neceario utilizar funciones especiales, ya que dos o más bytes consecutivos pueden representar un único carácter en ese esquema de codificación. Si, de lo contrario, se usa una función que no considera caracteres multibyte con la cadena de caracteres, es probable que falle al detectar el comienzo o el final del carácter multibyte, produciendo resultados inesperados. A mí me ocurrió en un proyecto en el que usando las funciones de manipulación de cadenas normales obtenía resultados que no debía y el que era el CTO de la empresa me dijo que usara las funciones de manipulación de cadenas multibyte y obtuve los resultados esperados.
A continuación os pongo un listado de las funciones más normales. Si os fijais se añade el prefijo mb_ así que es bastante intuitivo en caso de las funciones más normales:

  • mb_strlen
  • mb_strpos
  • mb_substr
  • mb_send_mail (sobrecagar de mail). Esta es de las pocas que cambia casi todo el nombre.
  • mb_strlen()
Hay muchas más he puesto unas pocas para que veais que no hay mucha diferencia solo con la función de enviar emails. Así que si al usar las funciones sin mb_ nos funciona bien y el texto se corrompe pensar que es por la codificación multibyte.