marciarf 0 Denunciar post Postado Julho 15, 2008 Bom, vou tentar de novo.. Desculpem-me a insistência, mas venho protelando isso ha muito tempo e agora tenho que resolver "custe o que custar"! Estou agora fazendo o teste com o arquivo php antes de gravar no bd, através de echos. Vejo que o problema não é no bd, já que já aparece errado no browser antes de ser gravado lá. Estou usando mysql_query("SET NAMES UTF-8") e mysql_query("SET CHARACTER_SET UTF-8"), porém usando iso-8859-1 dá na mesma, colocando, como sua sugestão, utf8_decode nas variáveis. o que tem acontecido é que tem desmembrado a variável, ou seja, Padrão, Aço CA-25 e Aço CA-50, que são valores da vaiável $nome, aparecem no browser como: CODE nome.Padr nome.ão nome.A nome.ço CA-25 nome.A nome.ço Ca-50 Veja que aparece perfeitamente acentuadas porém desmembradas. alguém tem alguma idéia de como resolver isso? acho que já estou perto da solucao.. cassiano óliver Meu banco está como: CONJUNTO DE CARACTERES MySQL: UTF8 UNICODE(utf8) e collation da conexao:utf8_general_ci. Mas você viu o inicio do meu parser, com header e depois esses mysql_query("SET NAMES uft8") e mysql_query("SET CHARACTER_SET utf8"). É isso mesmo, pq dessa forma que eu te mostro ai, pra mim não grava corretamente. o seu banco está como utf8_unicode_ci? a solução que te passei inicialmente funciona perfeitamente se o banco estiver da forma acima... mysql_query("SET NAMES uft8") e mysql_query("SET CHARACTER_SET utf8"). Compartilhar este post Link para o post Compartilhar em outros sites
cassiano óliver 1 Denunciar post Postado Julho 15, 2008 faça um teste assim márcia... configure a tabela do BD para utf8_unicode_ci... se você usa o Dreamweaver como editor, cria um novo arquivo php... verifique se o Dreamweaver está configurado para utf8 unicode e não em iso... se você simplesmente troca o iso por utf8 na página, dá problema, acabei de testar aqui e desconfigura mesmo os acentos... faça um form simples e uma pagina php e grave algum texto com acento no banco e veja se terá problemas... já passei por algo parecido antes... tinha uma página iso, e simplesmente troquei por utf8, sempre dava errado... até que reconfigurei para utf8, desde então nunca mais tive problemas com acentuação.... Compartilhar este post Link para o post Compartilhar em outros sites
marciarf 0 Denunciar post Postado Julho 15, 2008 cassiano nossa, esse negócio já está me cansando.. é o seguinte, eu uso o phpmyadmin pra administrar o bd MySQL. Lá me aparece que o Conjunto de caracteres MySQL: UTF-8 Unicode (utf8) e o collation da conexao é utf-8 general_ci (este é que aparece em uma dropdowlist com as outras opcoes, porém eu nao consigo modificar). já entrei em tudo quando é lugar e nao consigo alterar isso pelo phpmyadmin. mas ainda acho que nao é o caso, pois estou testando antes de gravar e já no browser aparece errado, acredito se consertar e aparecer certo no browser tambem no bd ficará certo. você viu ai o que eu coloquei que está acontecendo. estou usando o utf8-decode e aparece corretamente grafadas os valores das variáveis, porém ela se fragmentam. entao o que era caminhão, fica "caminh" "ão". faça um teste assim márcia... configure a tabela do BD para utf8_unicode_ci... se você usa o Dreamweaver como editor, cria um novo arquivo php... verifique se o Dreamweaver está configurado para utf8 unicode e não em iso... se você simplesmente troca o iso por utf8 na página, dá problema, acabei de testar aqui e desconfigura mesmo os acentos... faça um form simples e uma pagina php e grave algum texto com acento no banco e veja se terá problemas... já passei por algo parecido antes... tinha uma página iso, e simplesmente troquei por utf8, sempre dava errado... até que reconfigurei para utf8, desde então nunca mais tive problemas com acentuação.... Compartilhar este post Link para o post Compartilhar em outros sites
cassiano óliver 1 Denunciar post Postado Julho 16, 2008 hum.... já tentou ao invés de usar acentos no código fonte, usar o código html? ex: Cassiano Óliver -> Cassiano Óliver Compartilhar este post Link para o post Compartilhar em outros sites
marciarf 0 Denunciar post Postado Julho 16, 2008 Veja Os meus dados vem de um arquivo xml gerado pelo MS Project. Poderia até usar htmentities, apesar de ainda nao ter testado a leitura do bd dessa forma, só testei gravar la. Porém, como estou, parece, tao proximo de solucionar isso, já que aparecem as palavras com grafia correta, precisando apenas entender pq ela se separa com o utf8_decode, achei que fosse possível resolver isso de uma vez por todas. hum.... já tentou ao invés de usar acentos no código fonte, usar o código html? ex: Cassiano Óliver -> Cassiano Óliver Compartilhar este post Link para o post Compartilhar em outros sites
marciarf 0 Denunciar post Postado Julho 16, 2008 bom, como preciso realmente descobrir como resolver isso, a cada nova descoberta vou postando pra ver se alguém conhece a solução. vou colocar o techo do código e o que ele gera: //função que traz os dados do xml function dados($parser, $dados) { global $grupo; global $nomeprojeto; global $empresa; global $autor; global $data_ini; global $data_fim; global $tag; global $numero; global $nome; global $duracao; global $unidrecurso; global $numetarefa; global $numerecurso; global $inicioatribuicao; global $fimatribuicao; global $quanttotal; global $quanttotal_r; global $dentro_de_timephased; switch($tag){ case "TITLE": $nomeprojeto=$dados; //$nomeprojeto=utf8_encode($nomeprojeto); echo $nomeprojeto."<br>"; break; case "COMPANY": $empresa=$dados; //$empresa=utf8_encode($empresa); echo $empresa."<br>"; break; case "AUTHOR": $autor=$dados; //$autor=utf8_encode($autor); //echo $autor."<br>"; break; case "STARTDATE": $data_compi=explode("T",$dados); //$data_ini=strtotime($data_compi['0']); break; case "FINISHDATE": $data_compf=explode("T",$dados); //$data_fim=strtotime($data_compf['0']); break; case "UID": $numero=$dados; break; case "NAME": $nome=$dados; $nome=utf8_decode($nome); echo "nome=".$nome."<br>"; break; case "DURATION": $valor=substr($dados,2 ,-1); $replace1=array("H","M"); $duracao=str_replace($replace1, ":", $valor); break; case "GROUP"; $grupo=$dados; //$grupo=utf8_encode($grupo); //echo $grupo."<br>"; break; case "MATERIALLABEL": $unidrecurso=$dados; break; case "RESOURCEUID": $numerecurso=$dados; break; case "TASKUID": $numetarefa=$dados; break; case "FINISH": if($dentro_de_timephased == "true") break; $fimatribuicao=$dados; break; case "START": if($dentro_de_timephased == "true") break; $inicioatribuicao=$dados; break; case "WORK": $valor1=substr($dados,2 ,-1); $replace=array("H","M"); $quanttotal_r=str_replace($replace, ":", $valor1); $quanttotal=transform($quanttotal_r); break; }//fim switchde todos esses cases, o problema principal pode ser constato em name, que em geral é onde tem os nomes dos materiais que tem acento. o echo que esta'no codigo gera como saida: nomeprojetoGERAL nome=CRONOGRAMAGERAL.xml GERAL RJN nome=Padr nome=ão nome=A nome=ço CA-25 nome=A nome=ço Ca-50 nome=Ajudante de Carpinteiro nome=Ajudante de Encanador nome=Ajudante de Ferreiro nome=Ajudante de Telhadista nome=Areia Fina nome=Areia Grossa nome=Areia M nome=édia nome=Arruela furo 9mm nome=Azulejos 15xa5cm nome=Betoneira nome=Brita 1 nome=Brita 2 nome=Cabos nome=Cal hidratada nome=Caminh nome=ão basculante nome=Carpinteiro nome=Chapa madeira comp 12mm nome=Cimento nome=Cimento Branco nome=Cimento Colante nome=Cola nome=Comprador nome=Conex nome=ão p/ eletroduto nome=conex nome=ão p/ eletroduto 1/2" nome=Dobradi nome=çapercebam que onde tem algum tipo de acento a variável nome aparece dobrada ou fragmentada com uma parte até o caracter acentuado e outra com a parte posterior. Alguém teria alguma explicação?resolvendo isso, acabou meu problema já que as palavras estão com a acentuaçaão correta. Veja Os meus dados vem de um arquivo xml gerado pelo MS Project. Poderia até usar htmentities, apesar de ainda nao ter testado a leitura do bd dessa forma, só testei gravar la. Porém, como estou, parece, tao proximo de solucionar isso, já que aparecem as palavras com grafia correta, precisando apenas entender pq ela se separa com o utf8_decode, achei que fosse possível resolver isso de uma vez por todas. hum.... já tentou ao invés de usar acentos no código fonte, usar o código html? ex: Cassiano Óliver -> Cassiano Óliver Compartilhar este post Link para o post Compartilhar em outros sites
Diego Henrique 0 Denunciar post Postado Julho 16, 2008 Bem, esses problemas com acentos são fáceis de resolver se seguidos estes passos A codificação do banco tem que ser esta, em todas as tabelas charset : latin1 collation : latin_swedish_ci A página terá que ser impressa em formato iso-8859-1, se ta com duvida da maneira que ela está sendo exibida, vai em exibir -> codificação e veja qual a marcada. Se tiver uft8 por exemplo, tenta colocar <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />no arquivo responsável. Se não der, coloque o Header também, antes de qualquer coisa. Sempre usei desta maneira e não precisava executar estes comandos mysql_query("SET NAMES uft8") e mysql_query("SET CHARACTER_SET utf8"). Ai nunca tive problemas... Agora se você quer exibir tudo em utf8, tudo tem que ser em UTF8. Charset e collation como uft8, a codificação de pagina em utf8 e SEM os codigos que citei acima, pois você joga a variavel em UTF8 e o banco converta a variavel em UTF8 denovo, ferra tudo, a variavel vai ser convertida 2 vezes. abraços! Compartilhar este post Link para o post Compartilhar em outros sites
marciarf 0 Denunciar post Postado Julho 16, 2008 bem diego o problema agora nem é acertar isso, pois consegui fazer com que as palavras fiquem com ~,',^ e outros, o problema é que quebra a variável no ponto que tem esses caracteres. se você olhar no meu post anterior poderá ver como está aparecendo no browser via echo. nome=Padr nome=ão nome=PROJETO ABC nome=ENGENHARIA nome=Projetos Civis nome=Projeto de Funda nome=ções nome=Projeto de Superestrutura nome=Projeto de Arquitetura nome=Projetos de Instala nome=ções nome=Projeto de Instala nome=ção Hidráulica nome=Projeto de Instala nome=ção Elétricaonde nome=Padr e nome=ão deveria ser nome=Padrão, entende? dai quando mando gravar no banco de dados só grava a segunda parte: ão. esse é o problema do momento...nem entra a codificação do banco, que é utf8, quando criei nao me atentei a esse detalhe, mas como o que mostra no browser é o mesmo que aparece no bd, resolvendo aqui é só gravar que ficará certo.. Bem, esses problemas com acentos são fáceis de resolver se seguidos estes passos A codificação do banco tem que ser esta, em todas as tabelas charset : latin1 collation : latin_swedish_ci A página terá que ser impressa em formato iso-8859-1, se ta com duvida da maneira que ela está sendo exibida, vai em exibir -> codificação e veja qual a marcada. Se tiver uft8 por exemplo, tenta colocar <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />no arquivo responsável. Se não der, coloque o Header também, antes de qualquer coisa. Sempre usei desta maneira e não precisava executar estes comandos mysql_query("SET NAMES uft8") e mysql_query("SET CHARACTER_SET utf8"). Ai nunca tive problemas... Agora se você quer exibir tudo em utf8, tudo tem que ser em UTF8. Charset e collation como uft8, a codificação de pagina em utf8 e SEM os codigos que citei acima, pois você joga a variavel em UTF8 e o banco converta a variavel em UTF8 denovo, ferra tudo, a variavel vai ser convertida 2 vezes. abraços! Compartilhar este post Link para o post Compartilhar em outros sites