Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Amanda HLA

FreeTDS + Acentos + MS SQL

Recommended Posts

Primeiro uma descrição do ambiente:

 

PHP

default_charset iso-8859-1

 

APACHE

HTTP_ACCEPT_LANGUAGE pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3

HTTP_ACCEPT_CHARSET ISO-8859-1,utf-8;q=0.7,*;q=0.7

 

AMBIENTE - Linux

LANG pt_BR

 

FreeTDS

[global]

# TDS protocol version

tds version = 4.2

client charset = "ISO-8859-1"

; initial block size = 512

 

Navegador

Firefox (Codificação: iso-8859-1)

 

SQL Server

Collation: SQL_Latin1_General_CP1_CI_AI

 

Li vários sites (inclusive aqui) e tentei:

header("Content-Type: text/html; charset=ISO-8859-1",true)

 

<meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1">

 

HTMLEntities();

 

utf8_decode();

 

Mas nada resolveu...

E para confundir mais ainda: a palavra "proprietário" insiste em aparecer como "propriet rio"...

"Antônio" e "Inclusão" aparecem normalmente em alguns campos e outros não!

 

Alguém já passou por isso e conseguiu resolver?

 

Agradeço desde já,

Amanda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas então tem que ser qual?A ISO-8859-2 ?Outra coisa estranha também é quando seleciono no Firefox para exibir com a codificação "ibm-850"...Aí outros acentos aparecem normalmente e outros como caracteres estranhos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, uma opção seria você modificar o seu ambiente para trabalhar com a codificação UTF-8, inclusive o editor que você usa deve salvar seus arquivos com essa mesma codificação.(tenta modificar a codificação padrão do seu editor primeiro para trabalhar com iso-8859-1 e testa se dá certo após re-salvar seus arquivos com iso-8859-1)Caso seja possível, tente escrever os acentos provenientes dos seus arquivos em htmlentities (ã = ã ç = ç). Tem alguns editores bons que transformam acentos automaticamente em entidades html (acho que o NuSphere phpEd é um deles). Os acentos que seus usuários mandam por formulários você pode tratar com htmlentities() do php.Bom, acho que isso foi o que fiz para resolver meus problemas, mas lembre-se, a opção de escrever em entidades html e de tratar os acentos dos seus usuários é sempre melhor opção, já que usuários linux têm dificuldades com acentos escritos em iso-8859-1, creio eu, e, quando escritos em entidades html, seus acentos aparecem em várias codificções diferentes com a mesma cara. até mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada pela resposta mas o problema é que essas palavras acentuadas estão saindo de um BD...Praticamente, não tenho como alterar o BD todo para utilizar htmlentities e o mais curioso, é que os dados que eu inseri nesse BD através do meu código em PHP vai acentuado e é exibido corretamente no IE. No Firefox, não sei por qual motivo, dá esse problema...Alguma outra sugestão, por favor?Suspeito que seja culpa do FreeTDS, que ao trazer dados do BD mude alguma coisa mas o arquivo de configuração dele está correto!

Bom, uma opção seria você modificar o seu ambiente para trabalhar com a codificação UTF-8, inclusive o editor que você usa deve salvar seus arquivos com essa mesma codificação.(tenta modificar a codificação padrão do seu editor primeiro para trabalhar com iso-8859-1 e testa se dá certo após re-salvar seus arquivos com iso-8859-1)Caso seja possível, tente escrever os acentos provenientes dos seus arquivos em htmlentities (ã = ã ç = ç). Tem alguns editores bons que transformam acentos automaticamente em entidades html (acho que o NuSphere phpEd é um deles). Os acentos que seus usuários mandam por formulários você pode tratar com htmlentities() do php.Bom, acho que isso foi o que fiz para resolver meus problemas, mas lembre-se, a opção de escrever em entidades html e de tratar os acentos dos seus usuários é sempre melhor opção, já que usuários linux têm dificuldades com acentos escritos em iso-8859-1, creio eu, e, quando escritos em entidades html, seus acentos aparecem em várias codificções diferentes com a mesma cara. até mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Solução encontrada:

 

O problema é que no freetds.conf, eu deixei o tds version = 4.2,sendo que estou acessando o SQL Server 2000. Logo o certo é tds version = 8.0 .

Coloquei o char set como ISO-8859-1 .

 

Funcionou! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.