Lúdio 5 Denunciar post Postado Outubro 28, 2013 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ênciasNo 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
Bruno RafaeI 3 Denunciar post Postado Outubro 28, 2013 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
Lúdio 5 Denunciar post Postado Outubro 29, 2013 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
Enrico Pereira 299 Denunciar post Postado Outubro 29, 2013 Coloque tudo em UTF-8, basta isso. Compartilhar este post Link para o post Compartilhar em outros sites
Lúdio 5 Denunciar post Postado Outubro 29, 2013 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
Lúdio 5 Denunciar post Postado Outubro 29, 2013 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 VidaE 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
hinom 5 Denunciar post Postado Outubro 29, 2013 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
Lúdio 5 Denunciar post Postado Outubro 29, 2013 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
Bruno RafaeI 3 Denunciar post Postado Outubro 29, 2013 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
hinom 5 Denunciar post Postado Outubro 29, 2013 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
Bruno RafaeI 3 Denunciar post Postado Outubro 29, 2013 post errado! sry Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Outubro 29, 2013 #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
Lúdio 5 Denunciar post Postado Outubro 29, 2013 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 Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Outubro 29, 2013 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
hufersil 145 Denunciar post Postado Outubro 29, 2013 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
Lúdio 5 Denunciar post Postado Outubro 29, 2013 @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
hufersil 145 Denunciar post Postado Outubro 29, 2013 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
Bruno RafaeI 3 Denunciar post Postado Outubro 29, 2013 @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
hinom 5 Denunciar post Postado Outubro 29, 2013 #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
Lúdio 5 Denunciar post Postado Outubro 29, 2013 Chegando em casa eu verifico e dou um feedback. Obrigado pela atenção desde já. Compartilhar este post Link para o post Compartilhar em outros sites