Ir para conteúdo

POWERED BY:

Arquivado

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

Lúdio

Codificação - Code Igniter

Recommended Posts

Boa noite senhores,

 

Estou migrando pro codeigniter um sitezinho que tenho.

Porém, estou com problemas quanto a codificação


Meus dados entram no sql pelo painel, exemplo: Conveniências
No antigo site ao ler ele saía Conveniências.

Porém agora com o CodeIgniter ele sai exatamente como está no DB.

Alguém já passou por esse problema?

 

 

 

Grato desde já.


Compartilhar este post


Link para o post
Compartilhar em outros sites

você está com problema de encoding amigo... verifique qual o encode do seu banco e da sua aplicação (site) e tenta sincronizar os dois... no HTML você pode mudar em charset = "UTF8" ou "ISO8859-1", mas além disso você deve verificar como este arquivo está sendo SALVO, qual editor você usar? verifique na propriedade dele, qual tipo de endoce ele está salvando os arquivos, você precisa deixar o mesmo encoding do seu BANCO DE DADOS! Espero ter ajudado.

 

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo amigo, o problema é estou usando um painel 'stand-alone' (sem codeigniter).

E ao inserir o dado no bd, ele entra com a codificação Utf-8 ;///

Já revirei aqui, não sei onde posso estar errando nesse merd* de codificação

 

Já revirei essa internet, mas não encontro quem tenha o mesmo problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que vocês não entenderam..

 

Está tudo em UTF-8.


O problema está ao ler o banco de dados..

Por exemplo

 

Se no BD estiver desse jeito 'Atualizações' , o CI imprime certinho

Mas se estiver com os caracteres malucos ele sai do jeito que tá no bd, não codifica, entendeu ?

Os views estão todos em utf-8, não sei mais o que faço,

o bd está em utf8_general_ci ,

 

;//

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos ver se vocês conseguem entender melhor dessa vez.

 

Certo, tenho um painel separado que não está feito com o Code Igniter..

 

No meu banco de dados, ao inserir um novo record, ele grava por exemplo

Espaço Saúde e Vida.

Ele entra no banco de dados assim: Espaço Saúde e Vida

E isso o meu tão bonito Code Igniter não está conseguindo decifrar, ele simplismente imprime:
Espaço Saúde e Vida.


Mas se eu for no banco de dados e mudar pra: Espaço Saúde e Vida, ele consegue decifrar,

O problema é que eu não quero alterar mais nada nele, isso realmente é algo com o CI.
Pois antes funcionava direitinho.


Grato se alguém me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um paciente com dor cabeça vai numa clínica.

 

opção 1

 

Ao chegar na clínica, o médico não pegunta nada, nem mesmo o nome da pessoa.

A pessoa diz "tenho dor de cabeça".

O médico prescreve então um remédio sem olhar.

...

...

O paciente fica pior ou morre.

 

 

opção 2

 

 

Ao chegar na clínica, o médico faz uma série de perguntas.

Bebe? Fuma? Drogas ilícitas?

Estresse ?

Como está o trabalho?

Casado, filhos?

Convívio com família, como é?

 

Examina saliva, cor da língua, pálpebras, íris, oelosidade da pele, temperatura, saúde capilar, pulso, etc..

 

Enfim, o nome disso é diagnóstico.

 

 

 

 

Faça um diagnóstico..

Pegue os dados originais que estavam no sistema anterior, antes de migrar para o CodeIgniter, e examine qual o real encode está usando.

 

Não olhe pelo banco de dados.

 

Exporte uma tabela para um arquivo texto e examine-o.

No PHP tem funções que detectam o tipo de encode de uma string.

http://php.net/manual/en/function.mb-detect-encoding.php

 

Note que isso não é uma solução.. é apenas um diagnóstico. Numa analogia com o diagnóstico do médico acima, seria o trecho inicial "Bebe? Fuma? Drogas ilícitas?".. entendeu ?

 

Aí vc vai avançando os diagnósticos, sempre seguindo uma lógica de testar o que for mais simples e lógico.

 

Sabendo fazer isso, provavelmente vc nunca mais fará perguntas em foruns... pelo contrário, vc vai passar a responder perguntas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo

 

 

Eu fiz o mb_detect_encoding e ele me retornou Utf-8.

 

Outro detalhe é que o Ci, o mysql, o html, ta setado como utf8, realmente não sei onde estou errando. Já revirei, é alguma coisinha boba que está retornando essa codificação do mysql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lúdio, não querendo ser grosso, mas gostaria que você relê-se meu post, fui claro quando falei.. você precisa sincronizar todos aplicação + banco, blz! pelo o que vi, já está sincronizado, agora amigo, você precisará ir no seu EDITOR e saber em qual tipo de ENCODE ele está salvando os seus ARQUIVOS, suponhamos que no seu HTML esteja charset="UTF-8" blz, mas o seu arquivo está sendo salvo como ASCII (ISO-8859-1) então, meu amigo, quando o seu HTML for renderizado ele terá problemas de ENCONDING.

 

parece confuso, mas não é, basta você olhar no seu EDITOR!

 

PS:Qual tipo de editor você usar?

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz o mb_detect_encoding e ele me retornou Utf-8.

e como fez isso?

 

note que mesmo o bacno retornando como utf8, pode ser que os dados estejam corrompidos ou usando outro encode. Quer dizer, o UTF no banco pode estar como uma máscara/casca..

 

note também que no MySQL é possível definir um charset independente para uma coluna, tabela e base.

Ou seja, a base pode estar como uft8 e a tabela como latin-iso. Verifique isso também. Apesar de que não creio que seja esse o problema... mas de qualquer forma certifique-se.

 

 

bom.. vc diz que está tudo certo, então o que posso imaginar é que talvez falte definir o encode no header

 

header('Content-Type: text/html; charset=utf-8');

Compartilhar este post


Link para o post
Compartilhar em outros sites

#11 eu ? o que eu tenho a ver com isso?

mas ainda estou magoado contigo e contei pra minha mãe que vc me chamou de denecessário.

 

 

bom.. o filho é teu.. vc tem bola de cristal então cuida desse aí. rsrs

vc deveria ser médico do sus.



#11 nem adianta editar o post.. dei um print.. tá tudo com minha mãe.

 

 

#8,

 

oops,, sobre o header() no post #10.. esqueci que está usando CI.. o framework já deve estar aplicando isso ..

 

uma outra sugestão é verificar a configuração do mb_string();

 

execute phpinfo() e poste aí o trecho sobre o mb_string

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno, se voce nao entendeu a minha duvida, nem precisa responder.

Hinom, entao cara, o meu arquivo esta utf-8 (without BOM), o banco de dados esta setado em utf8, as tabelas estao em utf8, o engracado eh que se eu colocar DIRETO no banco de dados os acentos, o Code Igniter consegue ler perfeitamente, (coisa que se eu fizesse sem o framework iria ficar com aqueles simbolos de interrogacao). E isso eh que eu nao consigo entender, o que eu fiz foi simplesmente mudar pro CI, nao mexi em nada demais.

Ja tentei tambem setar o header(), nao obtive sucesso tambem.
Grato, desde ja.


--- Edicao, com relacao ao mbstring como pedido

YN9KuhC.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok.

 

execute isso no mesmo form do CI onde faz a inserção no banco:

echo 'mb_internal_encoding : ' . mb_internal_encoding();
echo PHP_EOL . '<br />default_charset: ' . ini_get( 'default_charset' );
echo PHP_EOL . '<br />mbstring.http_input: ' . ini_get( 'mbstring.http_input' );
echo PHP_EOL . '<br />mbstring.http_output: ' . ini_get( 'mbstring.http_output' );
exit;

 

Algumas questões para esclarecer,

 

1. O problema está em todos os dados ou somente em dados que vc manda inserir em formulários do CI ?

 

2. Se mandar o CI ler um registro anterior a mudança, aparece ainda com erros de encode ?

 

3. Qual gerenciador está usando para ler a base de dados diretamente?

Workbench? Navicat ? PHPMyAdmin ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está testando com Windows?

No momento da instalação do MySQL, escolheu UTF-8 como charset padrão?

 

Tente fazer o seguinte, assim que abrir a conexão com o banco:

// usando PDO
$pdo->query("SET NAMES 'UTF8'");

// procedural 
mysqli_query($conn, "SET NAMES 'UTF8'");

Depois tente fazer suas consultas normalmente.

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hinom, eu estou usando para inserir os dados, um admin separado.

De acordo com o que voce pediu:

mb_internal_encoding : ISO-8859-1 
default_charset: 
mbstring.http_input: pass 
mbstring.http_output: pass

 


Tenho uma screen aqui pra voce poder entender o que eu estou dizendo:
http://i.imgur.com/2QpCcjE.png

 

 

 

@Hufersil, como eu faco isso com o codeigniter ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se estiver usando as models do CodeIgniter,

$this->load->database(); // para conectar, se não tiver feito.
$this->db->query("SET NAMES 'UTF8'");

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Hinom, eu estou usando para inserir os dados, um admin separado.

 

De acordo com o que voce pediu:

mb_internal_encoding : ISO-8859-1 
default_charset: 
mbstring.http_input: pass 
mbstring.http_output: pass

 

 

Tenho uma screen aqui pra voce poder entender o que eu estou dizendo:

http://i.imgur.com/2QpCcjE.png

 

 

 

@Hufersil, como eu faco isso com o codeigniter ?

 

Não deveria ser:

mb_internal_encoding : UTF-8
default_charset: 
mbstring.http_input: pass 
mbstring.http_output: pass

Compartilhar este post


Link para o post
Compartilhar em outros sites

#16 aí que está o provavel problema... e parece ser isso mesmo..

 

Agora a coisa se encaixa com o que vc vem descrevendo.

 

mb_internal_encoding : ISO-8859-1

 

No bootstrap do CI, coloque

 

 

 

ini_set( 'default_charset', 'UTF-8' );
ini_set( 'mbstring.http_output', 'UTF-8' );
ini_set( 'mbstring.internal_encoding', 'UTF-8' );

 

Com isso, se não tiver outro problema no CI, deve ajeitar tudo.., inclusive nem precisa usar a "gambiarra" com o SET NAMES.

 

 

Para aprender a configurar o ambiente, esse tópico pode lhe auxiliar:

http://forum.imasters.com.br/topic/340459-php-html-mysql-charset-encoding/

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.