Olá galera,
Nesse post vou compartilhar uma solução para o caso de uma aplicação PHP rodando no Linux e o SQL Server no servidor Windows.
O primeiro ponto é ter instalado o pacote php5-sybase. Esse pacote fornece o módulo de conexão com bancos Sybase e SQL Server. No Ubuntu, basta executar o comando abaixo caso não o possua instalado.
sudo apt-get install php5-sybase
Supondo que nossa aplicação seja UTF-8 e o banco esteja usando collation Latin1_General_CI_AS. Assim que a aplicação for executada, todas as strings vindas do banco que possuem acento não vão ser exibidas.
Para solucionar o problema, vamos precisar editar um arquivo de configuração do FreeTDS. Para quem não conhece, o FreeTDS é um conjunto de bibliotecas que permite que seus programas "conversem" nativamente com SQL Server e Sybase.
No comando abaixo estou usando o VIM mas fique a vontade para utilizar editor um de sua preferência.
sudo vim /etc/freetds/freetds.conf
No trecho de configurações globais, altere o tds version para 7.0 e logo abaixo dessa linha acrescente client charset = UTF-8. Após a alteração o arquivo deve ficar similar ao trecho abaixo com as alterações em vermelho.
# Global settings are overridden by those in a database
# server specific section
[global]
# TDS protocol version
tds version = 7.0
client charset = UTF-8
OBS: Não altere e nem remova os outros parâmetros nesse arquivo.
Com essa alteração o problema dos acentos devem ser resolvidos. Essa solução foi testada em servidores Ubuntu e CentOS mas deve funcionar com as demais distribuições Linux.
Bem pessoal, espero que a dica tenha sido útil.
Um abraço e até próxima.
Nenhum comentário:
Postar um comentário