Ir para conteúdo

POWERED BY:

Arquivado

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

geektr

[Resolvido] Caracteres Inválidos

Recommended Posts

Fiz um formulário de contato, porém ele deforma os caracteres: ç, ã, é, etc...

 

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <- REPAREM AQUI
[...]
<form name="formulario" method="post" action="post/contato.php">
  <table align="center" border="0" cellpadding="0" cellspacing="0" width="401"><!--DWLayoutTable-->
<tbody><tr>
<td class="style1" nowrap="nowrap" valign="middle" width="100">
<p><font class="style1">Nome:</font></p>
</td>
<td width="301">
<input class="form_campos" name="nome" size="34" type="text">
</td>
</tr>
<tr>
<td nowrap="nowrap" valign="middle"><font class="style1">Cidade</font></td>
<td>
<input class="form_campos" name="cidade" size="20" type="text">
</td>
</tr>
<tr>
<td nowrap="nowrap" valign="middle"><font class="style1">Estado:</font></td>
<td>
<select class="form_campos" name="estado">
<option value="Escolha seu Estado">Escolha seu Estado</option>
<option value="AC">AC</option>
<option value="AL">AL</option>
<option value="AM">AM</option>
<option value="AP">AP</option>
<option value="BA">BA</option>
<option value="CE">CE</option>
<option value="DF">DF</option>
<option value="ES">ES</option>
<option value="GO">GO</option>
<option value="MA">MA</option>
<option value="MG">MG</option>
<option value="MT">MT</option>
<option value="MS">MS</option>
<option value="PA">PA</option>
<option value="PB">PB</option>
<option value="PE">PE</option>
<option value="PI">PI</option>
<option value="PR">PR</option>
<option value="RJ">RJ</option>
<option value="RN">RN</option>
<option value="RO">RO</option>
<option value="RR">RR</option>
<option value="RS">RS</option>
<option value="SC">SC</option>
<option value="SE">SE</option>
<option value="SP">SP</option>
<option value="TO">TO</option>
</select>
</td>
</tr>
<tr>
<td nowrap="nowrap" valign="middle"><font class="style1">E-mail:</font></td>
<td>
<input class="form_campos" name="e-mail" size="34" type="text">
</td>
</tr>
<tr>
<td nowrap="nowrap" valign="middle"><font class="style1">Assunto:</font></td>
<td>
<input name="assunto_mensagem" class="form_campos" size="34" type="text">
</td>
</tr>
<tr>
<td align="center" nowrap="nowrap" valign="middle"><div align="left"><font class="style1">Mensagem:</font></div></td>
<td>
<textarea class="form_campos" name="mensagem" cols="34" rows="4"></textarea>
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
<!-- <font class="texto">* campos obrigatórios</font> -->
<br>
<div align="center">
<input class="form_botao" name="Enviar" value="Enviar " type="submit">
<input class="form_botao" name="Limpar" value="Limpar" type="reset">
</div>
</td>
</tr>
<tr>
<td><br>
</td>
<td><br>
</td>
</tr>
</tbody></table>
</form>

contato.php

 

<?
$hoje_tmp = getdate();
$hoje = ($hoje_tmp[hours].":".$hoje_tmp[minutes].":".$hoje_tmp[seconds]);

$nome = $_POST["nome"];
$cidade = $_POST["cidade"];
$estado = $_POST["estado"];
$email = $_POST["e-mail"];
$assunto_mensagem = $_POST["assunto_mensagem"];
$mensagem = $_POST["mensagem"];

global $email;

$enviou = mail("contato@site.com.br",
"$assunto_mensagem",
"Nome: $nome
Cidade: $cidade
Estado: $estado
E-mail: $email
Assunto: $assunto_mensagem
Mensagem: $mensagem",
"From: $email <$nome>");

if ($enviou){
echo "<b>$nome</b>, sua mensagem foi enviada com sucesso.<br>Em breve lhe responderemos.";
}

else {
echo "<b>$nome</b>, não foi possível enviar sua mensagem.<br>Tente novamente.";
}
?>

 

Porque está acontecendo isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente colocar o seguinte código no início de seu documento.

<?php
header("Content-Type: text/html;  charset=ISO-8859-1",true);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

não, agora ao invés de ficarem uns quadrados no lugar dos caracteres, ficam sinais de interrogação (?)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente usar a função utf8_encode() nos dados que estão chegando do formulário.

Ex.: $nome = utf8_encode($_POST["nome"]);

 

Se não der certo tente com a utf8_decode(), provavelmente vai funcionar com uma das duas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 - Uso dreamweaver,

 

Veja a imagem abaixo:

 

Imagem Postada

 

e a lista de opções disponiveis:

 

Imagem Postada

 

(note o utf8, creio que resolve o problema)

 

1, e 3 - Bom, achei isso no phpinfo

 

HTTP_ACCEPT_CHARSET 	ISO-8859-1,utf-8;q=0.7,*;q=0.7 
HTTP_ACCEPT_LANGUAGE 	pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3
HTTP_ACCEPT_ENCODING 	gzip,deflate 
Accept-Charset 	ISO-8859-1,utf-8;q=0.7,*;q=0.7 
ibase.default_charset	no value	no value
mssql.charset	no value	no value
_SERVER["HTTP_ACCEPT_CHARSET"]	ISO-8859-1,utf-8;q=0.7,*;q=0.7

praticamente todos, citam o utf-8...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta:

na hora de pegar o dado:

$nome		= addslashes($_REQUEST["nome"]);

na hora de ler:

$cidade		= htmlentities(utf8_decode($row[2]));

Compartilhar este post


Link para o post
Compartilhar em outros sites

KD os Headers do seu email??

Ta faltando principalmente o header Content-Type e charset

e inverta a ordem de nome - email

 

"From: $nome <$email>\r\nContent-Type: text/html; charset=utf-8"

Não esqueça de verificar a codificação do restante como disse a Hinom

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com uma dúvida parecida. Tudo funciona muito bem, na consulta dos dados, na inserção ao banco, tudo maravilha. O problema é quando vou gerar o relatório em PDF(utilizando FPDF). Todos os acentos ele troca por caracteres estranhos. O relatório é baseados em registros vindo do banco de dados.

 

Exemplo:

 

Na hora da inserção, eu coloco "Mário"

 

No banco ele registra como "Mário"

 

Na hora de aparecer na tela, ele mostra "Mário"

 

No relatório feito pelo FPDF ele mostra "Mário"

 

Não conheço muitos sobre esses formatos de linguagens, mas parece que tudo que eu fiz está em UTF-8. E o FPDF não trabalha com UTF-8 só com ISO-8859-1. Já tentei usar htmlentities, iconv, mudar o charset e não consigo resultado. Vocês tem alguma sugestão?

 

Desde já obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mário, tente usar utf8_encode e uft8_decode, um dos dois vai resolver, mas tem que ser antes de por o texto na folha de PDF.

 

$nome = utf8_decode($nome);
$pdf->addLine($nome);
// só exemplo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mário, tente usar utf8_encode e uft8_decode, um dos dois vai resolver, mas tem que ser antes de por o texto na folha de PDF.

 

$nome = utf8_decode($nome);
$pdf->addLine($nome);
// só exemplo

 

Cara, funcionou!

 

Eu já tinha tentando antes dessa forma:

 

$this->Cell(15,10,utf8_decode($linha[0]),1);

E não funcionou, ai tentei com:

 

for ($i=0;$i<(mysql_num_fields($result));$i++)
{
$linha[$i] =utf8_decode($linha[$i]) ;
}

E funcionou!

 

Valeu pela ajuda!

 

Apesar de não participar muito, aprendo muito com os artigos aqui!

 

Parabéns

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, ja fiz di tudo, encode, decode, header, ele vai tudo certo, na tela de agradecimento sem problemas, quando acesso o webmail, o assunto, está normal...só na mensagem que acontece isso x_x

 

to passanu raiva faiz 5 mes ja..ninguem consegue resolver

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta colocar este código.

 

<?
header("Content-Type: text/html;  charset=ISO-8859-1");
$hoje_tmp = getdate();
$hoje = ($hoje_tmp[hours].":".$hoje_tmp[minutes].":".$hoje_tmp[seconds]);

$nome = $_POST["nome"];
$cidade = $_POST["cidade"];
$estado = $_POST["estado"];
$email = $_POST["e-mail"];
$assunto_mensagem = $_POST["assunto_mensagem"];
$mensagem = $_POST["mensagem"];

$headers = "From: $email <$nome>\r\n";
$headers.= "Content-type: text/html; charset=iso-8859-1\r\n";

$enviou = mail("contato@site.com.br",
$assunto_mensagem,
"Nome: $nome
Cidade: $cidade
Estado: $estado
E-mail: $email
Assunto: $assunto_mensagem
Mensagem: $mensagem",
$headers
);

if ($enviou){
echo "<b>$nome</b>, sua mensagem foi enviada com sucesso.<br>Em breve lhe responderemos.";
}

else {
echo "<b>$nome</b>, não foi possível enviar sua mensagem.<br>Tente novamente.";
}
?>

Veja se funciona

 

Carlos Eduardo

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.