Ir para conteúdo

POWERED BY:

Arquivado

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

marciarf

enviar dados hidden e acentuação

Recommended Posts

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

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

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

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

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 switch
de 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=ça
percebam 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

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

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étrica
onde 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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.