Ir para conteúdo

POWERED BY:

Arquivado

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

Bruno Conte

Erro em acentuação

Recommended Posts

bom dia pessoal.

estou com problema de acentuação em meu codigo.

na verdade esse codigo le um xml e grava no banco, so que acentuação esta gravando tudo errado:

 

 

 

Escritório Mensalista

 

e no xml esta certinho com os acento, veja o codigo abaixo:

 

 

 

 

<?php
include"../includes/conecta.php";
$diretorio = "xml/";
$upload = $diretorio.$_FILES['xml']['name'];
$xml = $_FILES['xml']['name'];
if(move_uploaded_file($_FILES['xml']['tmp_name'], $upload))
{
$sql_nfe = mysql_query("insert into xml (nome) VALUES ('$xml')", $db);
$idimp = mysql_insert_id();
$sql_puxa_nfe = mysql_query("select * from xml where id = '$idimp'", $db);
$vetor = mysql_fetch_array($sql_puxa_nfe);
$numeronota = $vetor[nome];
$xml = simplexml_load_file( 'xml/' . $numeronota );
foreach($xml->channel->item as $item)
{
$codigo = $item->codigo;
$folha_mensal = $item->folha_mensal;
$cc = $item->cc;
$funcao = $item->funcao;
$nome_func = $item->nome_func;
$cbo = $item->cbo;
$departamento = $item->departamento;
$filial = $item->filial;
$admissao = $item->admissao;
$cod_atividades = $item->cod_atividades;
$desc_atividades = $item->desc_atividades;
$ref_atividades = $item->ref_atividades;
$vencimentos = $item->vencimentos;
$descontos = $item->descontos;
$total_descontos = $item->total_descontos;
$total_vencimento = $item->total_vencimento;
$salario_base = $item->salario_base;
$sal_contr_inss = $item->sal_contr_inss;
$base_calc_fgts = $item->base_calc_fgts;
$gts_mes = $item->gts_mes;
$base_calc_irrf = $item->base_calc_irrf;
$faixa_irrf = $item->faixa_irrf;
$valor_liquido = $item->valor_liquido;
$login_ou_matricula = $item->login_ou_matricula;
$sql_busca = mysql_query("select * from funcionario where matricula = '$login_ou_matricula'", $db);
$vetor = mysql_fetch_array($sql_busca);
if(mysql_num_rows($sql_busca) > 0){
$sql_busca1 = mysql_query("select * from folha where folha = '$folha_mensal'", $db);
$vetor1 = mysql_fetch_array($sql_busca1);
if(mysql_num_rows($sql_busca1) > 0){
echo"Holerite já Cadastrado";
echo "</br>";
}else{
$sql = mysql_query("insert into folha (codigo, folha, empresa, funcao, nome, cbo, departamento, filial, admissao, cod_atividade, desc_atividade, ref_atividades, vencimentos, descontos, total_descontos, total_vencimentos, salario_base, sal_contr_inss, base_calc_fgts, gts_mes, base_calc_irrf, faixa_irrf, valor_liquido, matricula) VALUES ('$codigo', '$folha_mensal', '$cc', '$funcao', '$nome_func', '$cbo', '$departamento', '$filial', '$admissao', '$cod_atividades', '$desc_atividades', '$ref_atividades', '$vencimentos', '$descontos', '$total_descontos', '$total_vencimento', '$salario_base', '$sal_contr_inss', '$base_calc_fgts', '$gts_mes', '$base_calc_irrf', '$faixa_irrf', '$valor_liquido', '$login_ou_matricula')", $db);
echo"Holerite de ".$nome;
echo" Cadastrado com sucesso";
echo "</br>";
}
} else {
$sql_funcionario = mysql_query("insert into funcionario (codigo_empresa, nome, matricula, senha, ativo) VALUES ('$codigo', '$nome_func', '$login_ou_matricula', '$login_ou_matricula', '2')", $db);
$sql_busca1 = mysql_query("select * from folha where folha = '$folha_mensal'", $db);
$vetor1 = mysql_fetch_array($sql_busca1);
if(mysql_num_rows($sql_busca1) > 0){
echo"Holerite já Cadastrado";
echo "</br>";
}else{
$sql = mysql_query("insert into folha (codigo, folha, empresa, funcao, nome, cbo, departamento, filial, admissao, cod_atividade, desc_atividade, ref_atividades, vencimentos, descontos, total_descontos, total_vencimentos, salario_base, sal_contr_inss, base_calc_fgts, gts_mes, base_calc_irrf, faixa_irrf, valor_liquido, matricula) VALUES ('$codigo', '$folha_mensal', '$cc', '$funcao', '$nome_func', '$cbo', '$departamento', '$filial', '$admissao', '$cod_atividades', '$desc_atividades', '$ref_atividades', '$vencimentos', '$descontos', '$total_descontos', '$total_vencimento', '$salario_base', '$sal_contr_inss', '$base_calc_fgts', '$gts_mes', '$base_calc_irrf', '$faixa_irrf', '$valor_liquido', '$login_ou_matricula')", $db);
echo"Holerite de ".$nome_func;
echo" Cadastrado com sucesso";
echo "</br>";
}
}
}
}
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade o problema em si é que no seu xml você trabalha com uma codificação de caracteres o no banco de dados outra e no caso na hora de seu insert o banco de dados esta convertendo para o padrão que esta configurado em sua tabela.

  • 1ª Solução: Configurar a codificação de caracteres.
  • 2ª Solução: usar funções para decodificar os caracteres exemplo utf8_encode, utf8_decone.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É uma das alternativas existe tambem a opção de mudar a codifição de caracteres da pagina.

 

Este artigo pode le ajudar com uma das soluções

http://rubsphp.blogspot.com.br/2011/07/problemas-dom-charset-nunca-mais.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

lendo, vi que o xml vem com o seguinte padrão:

 

 

 

<?xml version="1.0" encoding="Windows-1252"?>

 

e possivel ao exportar ele mudar para o:

 

 

 

 

<xml version="1.0" encoding="UTF-8" ?>

 

ou simplesmente decodificar para o padrão do banco?

porque colocando apenas no codigo:

 

 

 

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

 

não funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alaerte minha pagina que recebe so é o codigo php.

nao tem html, so um echo para mostrar os registros.



testei assim:

 

 

 

echo utf8_encode($cc);

 

e mesmo assim veio com a parte de acentuação errada.

 

 

 

Escritório Mensalista

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso você pode usar utf8_encode, caso a codificação de sua pagina não estiver como UTF-8 coloque.

 

HTML 4

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


HTML 5

<meta charset="UTF-8" >

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca isso na conexão

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');

no index coloca assim

<?php ini_set('default_charset','UTF-8');?>
no mysql coloca tudo utf8_unicode_ci

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.