PHP e problemas de codificação

Durante algum tempo enfrentei alguns problemas com a codificação de textos no PHP. Algumas vezes dependemos de configurações terceiras de servidores , configurações estas que podem não levar em conta como nossos sistemas foram pensados para estar em produção, e terminando por ignorar algumas premissas importantes para o funcionamento correto da aplicação, e é claro, a satisfação dos clientes.  E talvez esse possa ser um problema um tanto quanto constante para pessoas que contratam serviços de hospedagem e VPS estrangeiros, de modo que durante a configuração dos servidores, naturalmente os configuram de acordo com as necessidades comuns da região em questão.

Há um tempo atrás uma aplicação a qual eu era um dos mantedores estava hospedada em um servidor estrangeiro, que por conta de situações desconhecidas veio ter alguns problemas em seu hardware, de modo que a empresa que nos prestava o serviço configurou um novo servidor e colocou o os arquivos do sistema, retirado de seu backup, nesse novo servidor, e com isso surgiram diversos problemas de compatibilidade com funções, devido ao versionamento do PHP e inclusive de bibliotecas e codificação, de modo que fui obrigado a encarar o problema e buscar uma solução. A coisa mais rápida e errada (eu não sabia disso) para solucionar o problema era alterar a codificação dos dados exibidos – que estavam aparecendo com vários “” no lugar dos acentos – usando funções como utf8_encode(), utf8_decode(), e mb_convert_encoding(). Desse modo o problema foi solucionado em um primeiro momento, mas no decorrer dos tempos a empresa continuava a fazer alterações no servidor e o problema tornava a aparecer, isso aconteceu umas três vezes dentro de um ano, de modo que me motivei à buscar uma solução definitiva para o problema.

Comecei a buscar problemas parecidos em fóruns como stackoverflow e afins, comecei à vasculhar as configurações dos servidores, os php.ini, e arquivos do apache, bem como as configurações de charset dos bancos de dados vinculados à aplicação e achei o meu grande vilão que se ocultou por extenso, para alguns, período de tempo. O que deveria ser alterado e fixado era o arquivo de configuração do PHP que dizia respeito à aplicação que eu era responsável pela manutenção, algo totalmente pífio, mas por alguma razão – que alguns chamam de burrice – eu não havia pensado nisso antes, durante todo o decorrer de um ano.

Existem algumas propriedades de configuração do PHP que são responsáveis por ditar como o sistema irá tratar a codificação dos textos, e se a codificação errada for escolhida – diferente do padrão compatível com o seu país -, os textos irão sair todos problemáticos, retardados. No meu caso, o servidor estava configurado para o padrão japonês, e isso veio de brinde nos próprios pacotes de instalação do VPS em questão que acompanhavam o cPanel. A solução foi alterar as seguintes propriedades do arquivo de configuração do php: default_charset (utf-8), mbstring.http_output (utf-8), mbstring.internal_encoding (utf-8) e mbstring.language (Neutral). Feitas as alterações, basta remover os “ajustes técnicos” feitos sob a codificação e ser feliz para sempre.

Deixe uma resposta

Your email address will not be published / Required fields are marked *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>