Además de configurar default_charset
en php.ini, puede enviar el juego de caracteres correcto utilizando header()
desde su código, antes de cualquier salida:
header('Content-Type: text/html; charset=utf-8');
Trabajar con Unicode en PHP es fácil siempre y cuando se dé cuenta de que la mayoría de las funciones de cadena no funcionan con Unicode, y algunas podrían alterar completamente las cadenas . PHP considera que los "caracteres" tienen 1 byte de longitud. A veces esto está bien (por ejemplo, explode()
solo busca una secuencia de bytes y la usa como separador, por lo que no importa qué caracteres reales busque). Pero otras veces, cuando la función está diseñada para funcionar en caracteres , PHP no tiene idea de que su texto tiene caracteres de varios bytes que se encuentran con Unicode.
Una buena biblioteca para registrarse es phputf8 . Esto reescribe todas las funciones "malas" para que pueda trabajar con seguridad en cadenas UTF8. Hay extensiones como la extensión mbstring que también intentan hacer esto por usted, pero prefiero usar la biblioteca porque es más portátil (pero escribo productos de mercado masivo, así que eso es importante para mí). Pero phputf8 puede usar mbstring detrás de escena, de todos modos, para aumentar el rendimiento.