Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoa, o meu problema é o seguinte: estou desenvolvendo um sistema de fazer pedidos de venda, primeiro o usuário tem que fazer a cabeça do pedido, depois libera para ele inserir os itens, no form de inserção dos itens tem um campo "descrição_nf" onde ele pode escrever o que quiser, o problema é que quando é digitado caracteres especiais, ele está gravando no banco como UTF-8, quando deveria gravar em ISO, então, quando se realiza uma consulta no pedido, os caracteres aparecem zuados, pois as páginas estão em ISO.
Algumas considerações:
<meta charset="iso-8859-1">
Para gravar os dados, eu estou fazendo requisições com o javascrip, pra não dar refresh na página, visto que o usuário pode voltar na cabeça e fazer alterações, o código da requisição para gravar os itens, segue abaixo:
window.itens = new Array();
function PedidoItens (){
window.itens.empty();
$('table_produtos').getElements('tr').each(function(tr){
var id_item_pedido = tr.getElement('.td_id_item');
var id_produto = tr.getElement('.td_id');
var qtd = tr.getElement('.td_qtd');
var pr_unit = tr.getElement('.td_pr_unit');
var desc_nf = tr.getElement('.td_descricao_nf');
if(id_produto){
window.itens.push({
id_item_pedido: id_item_pedido.value,
id_produto : id_produto.value,
qtd : qtd.value,
pr_unit : pr_unit.value,
desc_nf : desc_nf.value,
});
}
});
this.itens= window.itens;
}
function gravarPedidoItens(){
var pedidoItens = new PedidoItens;
var pedidoItensJSON = JSON.encode(pedidoItens);
var r = new Request({
url: 'gravar_pedido_itens.php',
method: 'post',
async: false,
encoding: 'iso-8859-1',
onProgress: function(){
mostraMensagem('mensagem_cadastro_pedido','Aguarde, processando...',0);
},
onSuccess : function(resposta){
if(resposta ==='ok'){
mostraMensagem('mensagem_cadastro_pedido','Itens Cadastrados com sucesso',0);
}else{
mostraMensagem('mensagem_cadastro_pedido','Erro! '+resposta,1);
}
},
onFailure: function(){
mostraMensagem('mensagem_cadastro_pedido','Erro ao gravar o pedido!!',1);
}
});
r.post("pedidoItens="+pedidoItensJSON);
}
O request da consulta:
function consultarPedido(){
var r = new Request({
url: 'load_pedido.php',
method: 'post',
encoding: 'iso-8859-1',
onProgress: function(){
mostraMensagem('mensagem_filtro_pedidos','Aguarde, processando...',0);
},
onSuccess: function(resposta){
if(resposta == '0'){
mostraMensagem('mensagem_filtro_pedidos','Pedido n\u00e3o encontrado ou status n\u00e3o permite edi\u00e7\u00e3o',1);
}else{
montaGridItens();
}
},
onFailure: function(){
mostraMensagem('mensagem_filtro','Erro ao carregar o pedido',1);
}
});
r.post("id_pedido="+id_pedido+"&acao=consultar");
}
Através do firebug, eu consigo ver o que está sendo passado para a página php, e ele está passando como se o dado estivesse em utf-8 e fosse convertido pra iso
"desc_nf":"CHURRASCÃO"
tecnicamente, está certo, mas não está, pq ele não deveria estar em utf-8
outro detalhe, na página onde o php faz a consulta no banco, se eu não colocar essa linha
header('Content-Type: text/html; charset=iso-8859-1',true);
Os caracteres especiais de dados que no banco estão em latin1, aparecem zuados, como se a página estivesse em utf-8 e os dados em iso:
"IND E COM DE COSM?TICOS"
Mais uma consideração, no cabeçalho de requisição do cliente, aparece
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Esse é o problema, acontece que eu não sei de onde ele está pegando esse utf-8, já revisei todas as páginas, o navegador está padronizado com ISO, já tentei tudo o que eu achei na net de solução, com certeza deve ser algo simples, eu espero, mas já estou "viciada" nos testes e soluções, então não consigo ver o problema/solução com clareza.
Tentei passar o máximo de informação possível, pode ser que algumas nem sejam relevantes, mas espero que alguém possa me ajudar
Carregando comentários...