Além de definir default_charset
no php.ini, você pode enviar o conjunto de caracteres correto usando header()
de dentro do seu código, antes de qualquer saída:
header('Content-Type: text/html; charset=utf-8');
Trabalhar com Unicode no PHP é fácil, desde que você perceba que a maioria das funções de string não funciona com Unicode e algumas podem alterar completamente as strings . O PHP considera "caracteres" com 1 byte de comprimento. Às vezes, isso é bom (por exemplo, explode()
apenas procura uma sequência de bytes e a usa como um separador - portanto, não importa quais caracteres reais você procura). Mas outras vezes, quando a função é realmente projetada para funcionar com caracteres , o PHP não faz ideia de que seu texto possui caracteres de vários bytes encontrados no Unicode.
Uma boa biblioteca para verificar é o phputf8 . Isso reescreve todas as funções "ruins" para que você possa trabalhar com segurança em seqüências de caracteres UTF8. Existem extensões como a extensão mbstring que tentam fazer isso por você também, mas prefiro usar a biblioteca porque é mais portátil (mas eu escrevo produtos de mercado de massa, então isso é importante para mim). Mas o phputf8 pode usar o mbstring nos bastidores, de qualquer maneira, para aumentar o desempenho.