Ir para conteúdo

POWERED BY:

Arquivado

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

vitinho.vitor

[Resolvido] Codificação

Recommended Posts

Olá pessoal,

Mais uma vez estou com um problema de codificação que não encontro solução.

Tenho um banco de dados MySQL e puxo as linhas via PHP. Quando retorna ele me aparece caracteres inválidos.

Se uso :

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Me retorna assim:

Casa, 9 dorms, 9 su�tes, 90 vagas �rea �til 100

 

Se uso:

<meta http-equiv="Content-Type" content="text/html; charset=UFT-8">

Me retorna:

Casa, 9 dorms, 9 su�tes, 90 vagas �rea �til 100

 

O que devo fazer para que estes e todos os acentos ficam arrumados?

 

Obbrigado

Vitor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esqueça isso por enqnto.

 

Qual é o collation que você tá usando no banco de dados ?

 

Padronize.

Use o mesmo tanto no banco, qnto na metatag, qnto nos headers php, qnto na codificação script.

 

Se você fizer isso, não precisa se preocupar em ficar 'codificando' e 'decodificando'.

Faça da forma correta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia!

 

Para o nosso padrão de escrita, acredito que o charset (no html/php) correto seja o iso-8859-1 (ou não?)!

Mas qual collate compatível no MySQL? Tenho usado o latin1_swedish_ci e parece ter funcionado! Mas é o melhor?

Muito obrigado.

 

Pedro - Pontosoft Informática - www.pontosoft.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

geramente eu uso utf8_decode ou utf8_encode na hr de gravar as variaveis no banco

 

$MinhaVariavel = utf8_decode($_POST['MinhaVariavel']);

e pode ser trocada por utf8_encode

 

depois e so gravar $MinhaVariavel no banco

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa essas funções abaixo, neste exemplo antes de converter o texto é realizado uma verificação, assim o texto só é convertido se realmente estiver com a codificação incorreta.

 

/**
* Converte um texto em $string para utf8 caso a string não estejá em utf8.
*
* @param   string  $string    String contendo o texto
*/
function codificacao_para_utf8($string) {
   return (mb_detect_encoding($string . "x", 'UTF-8, ISO-8859-1') == "UTF-8" ? $string : utf8_encode($string));
}

/**
* Converte um texto em $string para ISO caso a string estejá em utf8.
*
* @param   string  $string    String contendo o texto
*/
function codificacao_para_ISO($string) {
   return (mb_detect_encoding($string . "x", 'UTF-8, ISO-8859-1') != "UTF-8" ? $string : utf8_decode($string));
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em certos casos, onde haja algum motivo que inviabilize refazer ou consertar todo o projeto, utilize a forma que "funcionar".

No entanto, o uso de conversores para esse caso não é recomendável por questões de performance, padronização, etc.

Se puder faça conforme comentado no post #5.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

Meu banco de dados está como latin1_swedish_ci mas também já tentei com latin1_general_ci e não consegui, sempre retorna os caracteres que havia falado.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu banco de dados está como latin1_swedish_ci

okay, mantenha assim.

 

no inicio dos teus scripts, coloque este header:

 

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

 

e então, mantenha a meta tag:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

 

Além disso, confira o seguinte:

semttulorv.png

http://forum.imasters.com.br/topic/398442-erro-em-session-e-header/page__view__findpost__p__1559259

 

deixe em ANSI também.

Irá resolver, esta é a forma correta.

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.