Ir para conteúdo

POWERED BY:

Arquivado

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

joootap

[Resolvido] Acentuação Mysql/Php

Recommended Posts

Fala pessoal, estou aqui com mais uma dúvida... Dessa vez mysql/php.

 

Estou procurando na internet há uns 3 dias como solucionar meu problema com acentuação, já tentei diversas coisas e até agora nada.

Quero utilizar a codificação Utf-8 e realmente quando jogo no banco fica uma acentuação incorreta, por exemplo:

 

João = JoÒo

 

Isso quando ainda trato no php utilizando o

 

$nome  = utf8_decode($_POST["nomefrm"]);

Caso o contrário fica assim no banco de dados:

 

João = Jo|-úo

 

Estou procurando no forum, mas também até agora nenhuma solução me adiantou. Alguém tem alguma solução definitiva? Aonde verificar e etc...

Mas por favor, não quero utilizar ISO-8859-1.

 

Agradeço a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

como fica se você usar utf8_encode($_POST["nomefrm"]); ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com o utf8_encode ele fica assim

 

João = Jo|-âTúo

 

Então... De todas essas soluções simples eu já tentei, não rolou.

 

Será que faltou eu olhar algum lugar que não estou olhando?

Enfim, obrigado por responderem, aguardo mais ajuda de quem poder.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de muitos testes, parece que a visualização do mysql pela linha de comando estava vindo errada e na verdade utilizando o utf8_decode funcionou, cujo eu já tinha testado, mas só consegui ver agora pelo php my admin...

 

Essa é uma solução adequada? Colocar utf8_decode em todas variáveis de entrada?

E no meio desse conflito, pelo que eu vi meu php estava exibindo os caracteres errados e não houve header que solucionou... Buscando no php manual achei uma solução bem adequada, espero que sirva para alguém.

 

iconv_set_encoding("internal_encoding", "ISO-8859-1");
iconv_set_encoding("output_encoding", "UTF-8");
iconv_set_encoding("input_encoding", "UTF-8");
ob_start("ob_iconv_handler");

Setei o encoding do php e rolou tudo certinho, antes os carcteres ficavam por exemplo: jo?o no lugar de joão...

 

Agora meu método de utf8_decode é o melhor para mysql/php ou existe algo melhor?

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende do que você está falando...

 

Se é no banco, mude o collation...

 

Se for na página, coloque isto na primeira linha do seu PHP

 

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

ou

 

header("Content-Type: text/html; charset=UTF-8", true);

Veja qual funciona...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende do que você está falando...

 

Se é no banco, mude o collation...

 

Se for na página, coloque isto na primeira linha do seu PHP

 

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

ou

 

header("Content-Type: text/html; charset=UTF-8", true);

Veja qual funciona...

 

Realmente quero usar tanto no banco quanto no php UTF-8, e no banco já está com o collation utf_genaral_ci, mas mesmo assim tenho que tratar com o utf8_decode, há alguma forma sem esse tratamento?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente quero usar tanto no banco quanto no php UTF-8, e no banco já está com o collation utf_genaral_ci, mas mesmo assim tenho que tratar com o utf8_decode, há alguma forma sem esse tratamento?

UTF-8 possui variações

 

pode ser que os dados no seu banco de dados estejam sendo gravados em latin1 mas com condificação UTF8.

 

verifique se está realmente sendo gravado como UTF8-utf8

 

 

 

verifique qual charset está usando o banco de dados

qual charset está usando as tabelas

qual charset está deifnido para cada coluna.

 

exemplo

 

um banco de dados pode estar definido como latin1

uma tabela específica como sjis

e uma coluna dentro dessa tabela pode estar como utf8

 

os dados dentro da coluna vao ser gravados em utf8

as outras colunas sem especificação, receberá o charset definido pela tabela, "sjis"

 

se a tabela não tivesse especificação, seriua atribuído o charset latin1 do banco..

 

enfim..

isso é apenas a "ponta do iceberg"

 

 

consulte a busca do forum, pois existem centenas de tópicos abordando questões diferentes.

 

 

utilize o MySQL Administrator para gerenciar o MySQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está utilizando AJAX?

 

Se estiver, será necessário mesmo utilizar utf8_decode() devido ao AJAX não suportar muito bem essa codificação...

 

Eu sempre uso latin1 no BD e ISO-8859-1 nas páginas...

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.