Ir para conteúdo

POWERED BY:

Arquivado

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

eu_Nana

[Resolvido] problemas com acentuação

Recommended Posts

Olá pessoal,

 

Tenho um BD onde os nomes das pessoas estão armazenados da seguinte forma: JOSÉ ÂNGELO por exemplo......qnd exibo a consulta esse dado vêem do BD com caracter estranho....como segue: JOSÉ ÂNGELO....add essa linha:

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

na página mais não tive resultado...continua igual

 

Alguém pode me ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize a mesma codificação em todo o projeto, se está utilizando UTF-8 no banco de dados, utilize-a nos arquivos para escrever o código e para exibir a página no navegador.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nana, o seu banco de dados está com codificação ISO ?

No caso do MySQL você pode consultar (via phpMyAdmin, por ex) a propriedade COLLATION das tabelas. Geralmente latin1 equivale à ISO-8859-1.

Para complementar, além do header(); você precisa verificar se na sessão HEAD do seu HTML tem uma meta-tag definindo uma codificação diferente.

 

Adicione a linha a seguir na sessão HEAD de seu HTML.

 

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Nana...

Bom...bem recentemente tive esse mesmo problema que o seu....pois eu estava a utilizar o AJAX para realizar algumas operações no sistema e...dava esse problema aí...e a unica alternativa que achei ("que prestou") foi essa:

$descricao = utf8_decode($descricao);//Tratando o grande problema da acentuação

No seu caso são consultas não é...basta filtrar as Strings com essa função aí que resolver...

No caso de ter muitas Strings...vai ficar meio trabalhoso mas...

 

Bom...espero que resolva o seu problema...

Abraços http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

enviar uma query para o banco no formato

SET NAMES "latin1"

pode facilitar na hora de resgatar os dados do banco.

 

um grande problema enfrentado é que a codificação padrão do XMLHTTPRequestObject é UTF-8, daonde vem a incompatibilidade. Para resolver este problema envie um

xhr.setRequestHeader('content-type','mime/type; charset=iso-8859-1');
"javascript"

substitua mime/type pelo formato de arquivo que deve ser recebido pelo controle xhr (text/plain é o mais recomendado).

 

Para complementar, certifique-se de estar salvando os códigos-fonte na mesma codificação que devem ser exibidos. Não adianta nada forçar o PHP a enviar um header iso, definir uma <meta http-equiv /> iso e salvar o arquivo como unicode.

 

 

Entenda que a codificação vai além de processos de conversão como utf8_encode/decode(). É um processo de leitura e escrita, se você escreve em egípcio, não adianta pedir pra um grego ler. Você pode até conseguir ajuda de um tradutor, mas sua compreensão estará sujeita a falhas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Nana...

Bom...bem recentemente tive esse mesmo problema que o seu....pois eu estava a utilizar o AJAX para realizar algumas operações no sistema e...dava esse problema aí...e a unica alternativa que achei ("que prestou") foi essa:

$descricao = utf8_decode($descricao);//Tratando o grande problema da acentuação

No seu caso são consultas não é...basta filtrar as Strings com essa função aí que resolver...

No caso de ter muitas Strings...vai ficar meio trabalhoso mas...

 

Bom...espero que resolva o seu problema...

Abraços http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

 

Eu fiz exatamente td oq vcs falaram acima porém sem sucesso....continua do msm jeito.....eu tb estou usando ajax.....e não uso o phpmyadmin e sim o SQLYOG....não consigo encontrar a propriedade COLLATION das tabelas...me ajudem...

 

enviar uma query para o banco no formato

SET NAMES "latin1"

pode facilitar na hora de resgatar os dados do banco.

 

um grande problema enfrentado é que a codificação padrão do XMLHTTPRequestObject é UTF-8, daonde vem a incompatibilidade. Para resolver este problema envie um

xhr.setRequestHeader('content-type','mime/type; charset=iso-8859-1');
"javascript"

substitua mime/type pelo formato de arquivo que deve ser recebido pelo controle xhr (text/plain é o mais recomendado).

 

Para complementar, certifique-se de estar salvando os códigos-fonte na mesma codificação que devem ser exibidos. Não adianta nada forçar o PHP a enviar um header iso, definir uma <meta http-equiv /> iso e salvar o arquivo como unicode.

 

 

Entenda que a codificação vai além de processos de conversão como utf8_encode/decode(). É um processo de leitura e escrita, se você escreve em egípcio, não adianta pedir pra um grego ler. Você pode até conseguir ajuda de um tradutor, mas sua compreensão estará sujeita a falhas.

 

 

Não entendi, onde tenho q colocar essa linha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

a primeira, logo após se conectar com o banco

...
$bd = mysql_select_db($banco,$conn);
mysql_query('SET NAMES "latin1"');
...

 

a segunda, logo após instanciar o elemento ajax

ajax = new xmlHttpRequest();
ajax.setRequestHeader('content-type','text/plain; charset=iso-8859-1');

A terceira varia conforme o editor que você está utilizando

Compartilhar este post


Link para o post
Compartilhar em outros sites

a primeira, logo após se conectar com o banco

...
$bd = mysql_select_db($banco,$conn);
mysql_query('SET NAMES "latin1"');
...

 

a segunda, logo após instanciar o elemento ajax

ajax = new xmlHttpRequest();
ajax.setRequestHeader('content-type','text/plain; charset=iso-8859-1');

A terceira varia conforme o editor que você está utilizando

 

Não deu certo.....é o seguinte..minha página equipe.php esta da seguinte forma: eu exibo todos as pessoas....e qnd clico no nome de alguém ...ele exibe todos os dados referentes a essa pessoa....é nessa parte q o nome q possui acento vem com caracter estranho.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu_Nana você poderia postar essa parte do codigo para que possamos dar uma olhada?

No aguardo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comece a fazer as trocas, o que era latin1 e iso-8859-1 vira utf-8

O problema de codificação é que fica difícil descobrir o que está vindo daonde e para onde, sem acesso ao sistema propriamente dito.

Gostaria de enfatizar na questão de que você deve salvar o arquivo na codificação correspondente à qual ele deve ser apresentado.

 

Qualquer dúvida, exiba a página que envia os dados para o controlador ajax, passando algum valor como teste e verifique em que formato estão sendo impressos.

Se você se valer da função json_encode() para imprimir os dados e trabalhar com dados JSON, a própria função se encarregará de gerar valores hexadecimais correspondentes aos caracteres especiais e o motor javascript se encarregará de descriptografá-los. Mas neste formato, você NÃO DEVE enviar o cabeçalho setRequestHeader() como eu sugeri acima. Imprimindo a página, você verá que nomes como João, serão impressos como Jo0x00o onde 0x00 corresponde à codificação de ã. Não vai ser necessária nenhuma codificação adicional, o próprio Javascript se encarrega da conversão. Antes de implementar o método, certifique-se de que a página esteja gerando os caracteres acentuados corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu ainda não entendo esse costume do pessoal usar *_swedish_ci

 

 

Eu fiz a alteracao que o Gilmar falou.....não deu certo.....alguém me ajude....please...

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom ou voce faz tudo em utf-8 ou iso-8859-1

 

e no mysqlyog gere um sql mas faça um backup antes

depois teste assim

 

no caso aqui um exemplo depois no final coloque um valor deafult para a linguagem no caso

 

para caracteres vindo do banco com utf-8 você pode filtrar esses problemas de acentos usando o comando utf8_decode();

$nome = utf8_decode($variavel_vindo_do_banco);

CHARSET=latin1 
CHARSET=utf-8 
 
CREATE TABLE IF NOT EXISTS `planilhas` (
  `CD_planilha` int(11) NOT NULL AUTO_INCREMENT,
  `NM_planilha` varchar(200) NOT NULL,
  `NM_proprietario` varchar(100) NOT NULL,
  `CD_tamanho` int(11) NOT NULL,
  `CD_data` decimal(10,0) DEFAULT NULL,
  `CD_update` decimal(10,0) DEFAULT NULL,
  PRIMARY KEY (`CD_planilha`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1  ;// aqui voce altera no seu script sql

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara faz o seguinte poe teu codigo php e o script sql para a galera analizar pois assim fica dificil te ajudar pois cada um ja tentou te dar uma dica mas sem ver o teu codigo todo fica ruim de adivinhar o que pode ser o problema ok

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.