Ir para conteúdo

POWERED BY:

Arquivado

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

jucelio feitoza

Decode não funciona em include

Recommended Posts

Ao incluir (Include_once) uma outra pagina na minha index.php simplesmente aparece erros em nomes com acentuação. Ex:. No lugar do 'ç' aparece uma estrela com uma '?'.

 

já verefiquei e está sendo salvo em utf8 o arquivo incluido e o banco de dados também.

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br" xml:lang="pt-br">
<head>

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


<?php 
			   
			   
			   		
					switch ($pagina) {
					   case 'vazio':
							  include_once('home.php');
							 break;
					   case 'home':
							  require_once('home.php');
							 break;
					   case 'empresa':
							 include_once('empresa.php');
							 break;
					   case 'treinamentos':
							  include_once('treinamentos.php');
							 break;
					   case 'representantes':
							  include_once('representantes.php');
							 break;
					   case 'contato':
							  include_once('contato.php');
							 break;
					   case 'espec':
							  include_once('espec.php');
							 break;
					   case 'segmento':
							  include_once('segmento.php');
							 break;
					   case 'segmento':
							  include_once('segmento.php');
							 break;
					   case 'grupo':
							  include_once('grupo.php');
							 break;
					}
				?>


...

</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Primeiramente, você não precisa criar um case 'vazio' para possuir uma medida padrão,

só utilizar a opção "default" como


default:

include_once('home.php');

break;


Seguindo para o seu problema, Tenta colocar nos seus arquivos .php o cabeçaho:

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK. fiz o teste no arquivo incluso 'grupo.php' e não funciona

<?php
     header('Content-Type: text/html; charset=utf-8');
	include_once("../model/classes/produtos.php");
    $grupo = $_GET['grupo'];
	$pagin = $_GET['pagin']; // numero da pagina;
	$produto = new Produtos();
	$produto->GetPorgrupo($grupo);
  // $produto->prod_grupo_total; variavel com o total de produtos
	// $produto->prod_grupo_paginas;
				$inicio = ($pagin * 16) - 16;
				
				for($i=0; $i < $produto->prod_grupo_total; $i++){
				
				$fotoP[$i]  = substr($produto->prod_grupo[$i][2], 0, -4);
				$descricao[$i] = $produto->prod_grupo[$i][1];
				$fabric[$i] = $produto->prod_grupo[$i][7];
				$id_prod[$i] = $produto->prod_grupo[$i][0];
							
						}
			
				
				
				
				
 ?>



<html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br" xml:lang="pt-br">

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

<link href="css/estilo_carrossel.css"  rel="stylesheet" type="text/css" />
<div id='conteudo'>
	<table id='produtos_home'>
		<?php 
		
		$fim_prod = $produto->prod_grupo_total;  
		for($i = 0; $i<4; $i++) {
			if ($inicio == $fim_prod  ){ break;}
		 ?>
                <tr>
                <?php for($coluna = 0; $coluna<4; $coluna++) {  ?>
        	<td>
            
             <a href="index.php?pagina=espec&&id_prod=<?php echo $id_prod[$inicio];  ?>">
           <?php if(file_exists("img/produtos/produtos_p/".$fotoP[$inicio]."_160x120.jpg")){ ?>
            <img class="prod_p" width="160px" height="120px" src="img/produtos/produtos_p/<?php echo $fotoP[$inicio]."_160x120.jpg"; ?>" /> 
            <?php }else{    ?>
			
			<img class="prod_p" width="160px" height="120px" src="img/produtos/produtos_p/default.jpg" /> 
			
			<?php } ?>
            
             </a>
            
            <span class="nome_prod"><?php echo $descricao[$inicio];   ?> <br />  
            <span  class="nome_Fab"><?php echo $fabric[$inicio];   ?></span></span> 
            </td>   <?php $inicio++; if ($inicio == $fim_prod ){ break;} ?>
           <?php }?></tr>
         <?php }?>  
           
            
     
            
        
        
    
    </table>

</div>
	<link rel="stylesheet" href="css/paginacao_css.css" type="text/css" />
<div id="paginacao"> 

	<ul>
    		<li class="PrieUlt_num">Primeira</li>
					<?php	
								for($i=1; $i <= $produto->prod_grupo_paginas; $i++)
								   {
													if($pagin == $i)
													{
														echo "<li class='num_pag_selec' > ".$i." </li>"; // Escreve somente o n�mero da p�gina sem a��o alguma
													}
								    else
									    {
								      	echo "<li class='num_pag'><a href='index.php?pagina=grupo&&grupo=".$grupo."&&pagin=$i'> $i</a></li>"; // Escreve o n�mero e o link da p�gina
	
    									
					}}
			echo "<li class='PrieUlt_num'><a href='index.php?pagina=grupo&&grupo=".$grupo."&&pagin=$produto->prod_grupo_paginas;'> Última</a></li>";
            ?>
            </ul>
	
    
</div>
<th style=" border-top:2px #999999;"></th>


</html>

por exemplo em mascara de proteção fica assim :M�scara de Prote��o



fiz uns teste e vi que o erro só existe da saida do banco de dados. como faço para corrigir?

Compartilhar este post


Link para o post
Compartilhar em outros sites

nunca usei essas funções seria assim?

 

<option value="index.php?pagina=grupo&&pagin=1&&grupo=<?php print_r($grupo->grupos[$i][1]); ?>"><?php utf8_decode(print_r("$grupo->grupos[$i][1]")); ?></option>


consegui desta forma.

 


<option value="index.php?pagina=grupo&&pagin=1&&grupo=<?php print_r($nome =utf8_encode($grupo->grupos[$i][1])); ?>"><?php print_r($nome =utf8_encode($grupo->grupos[$i][1])); ?></option>

 

mais não tem como eu configurar o servidor ou algo do tipo. pois são muitas linhas de código que utiliza esses campos.

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

nunca usei essas funções seria assim?

 

<option value="index.php?pagina=grupo&&pagin=1&&grupo=<?php print_r($grupo->grupos[$i][1]); ?>"><?php utf8_decode(print_r("$grupo->grupos[$i][1]")); ?></option>

 

consegui desta forma.

 


<option value="index.php?pagina=grupo&&pagin=1&&grupo=<?php print_r($nome =utf8_encode($grupo->grupos[$i][1])); ?>"><?php print_r($nome =utf8_encode($grupo->grupos[$i][1])); ?></option>

 

mais não tem como eu configurar o servidor ou algo do tipo. pois são muitas linhas de código que utiliza esses campos.

obrigado

 

A questão é que são suas informações não estão no charset adequado na base de dados.

 

Faz um último teste:

 

1 - Tenta passar todos os <meta> de utf-8 para iso-8859-1

2 - modifique os para header('Content-Type: text/html; charset=iso-8859-1'); dos .php

3 - Não utilize as funções de utf8_decode e utf8_encode

 

 

OBS: print_r() é só para impressão de array, e não para índices individuais de um array

 

print_r($grupo->grupos) é diferente de print_r($grupo->grupos[$i][1]).

 

Só isso resolve echo $grupo->grupos[$i][1] ;

 

Outra coisa abre estes arquivos com notepad++ vá no menu formatar e veja qual codificação estão eles.

Compartilhar este post


Link para o post
Compartilhar em outros sites

no banco já modifiquei tudo para utf-8.

 

no notepad++ está em (utf8 sem BOM).

 

agora utilizando o iso-8859-1.

fica errado assim: "QUÌMICO" fica dessa forma "QUÃMICO"



no notepad++ estão em utf-8 sem BOM.

 

quando modifico para iso-8859-1 fica errado de outra forma não mais com a ? e sim desta maneira: Manta Asfáltica fica "Manta Asfáltica"

Compartilhar este post


Link para o post
Compartilhar em outros sites

no banco já modifiquei tudo para utf-8.

 

no notepad++ está em (utf8 sem BOM).

 

agora utilizando o iso-8859-1.

fica errado assim: "QUÌMICO" fica dessa forma "QUÃMICO"

 

no notepad++ estão em utf-8 sem BOM.

 

quando modifico para iso-8859-1 fica errado de outra forma não mais com a ? e sim desta maneira: Manta Asfáltica fica "Manta Asfáltica"

 

mas o teste que falei pra vc fazer não incluía mexer no banco, mas já que você mexeu é só definir tudo pra utf-8, e dar minha resposta como solução. hehehe :natalbiggrin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehe.

Não mais antes de todos os teste já tinha modificado no banco.

 

mesmo assim só funcionou utilizando os metodos de encode e decode.

 

Se você salvar todos os documentos, todos os <meta> e header() e sua base em utf-8, não há o que fazer mais.

Só se seu browser não estiver no enconding certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

somente nos select que ficam com erro agora.

 

<select style="margin-left:26px; margin-top:29px; width:150px;" name="jumpMenu" id="jumpMenu" onchange="form_grupo('parent',this,0)">
                                         <option value="#">Escolha o Fabricante</option>
  	<option value="#"></option>
                                         
                                          <?php 
										  		$count = count($grupo->grupos);
												for ($i = 0; $i < $count; $i++){ 
										  ?>	
                                          <option value="index.php?pagina=grupo&&pagin=1&&grupo=<?php  echo $nome = $grupo->grupos[$i][1]; ?>"><?php echo $nome = $grupo->grupos[$i][1]; ?></option>
                                          
                                         <?php } ?>
                                        
                                     </select>

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?php

$Conn = mysql_connect('127.0.0.1', 'root', '');

$DbSe = mysql_select_db('banco', $Conn);

 

// Após sua conexão ao banco de dados faça isso:

mysql_query("SET NAMES utf8");

mysql_query("SET CHARACTER_SET_CONNECTION=utf8");

mysql_query("SET CHARACTER_SET_CLIENT=utf8");

mysql_query("SET CHARACTER_SET_RESULTS=utf8");

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aff cara... Você deve marcar o meu post como resolvido, e não o seu...

Seja grato pelo menos fazendo isso... Ninguém cobra nada para te ajudar aqui...

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.