Por padrão todas requisições enviadas via Ajax são transmitidas na codificação UTF-8, isso pode gerar algumas problemas com strings que contenham palavras acentuadas (charset=iso-8859-1).
Isso acontece, por exemplo, quando queremos pegar os dados de um formulário preenchido pelo usuário e enviar para o servidor:
<script language="javascript">
$("#enviacontato").submit(function() {
var name = $('#name').val();
var email = $('#email').val();
$.post("recebedados.php",
{name: name, email: email, message: message },
function(data) {
alert(data);
});
return false;
});</script> |
<script language="javascript">
$("#enviacontato").submit(function() {
var name = $('#name').val();
var email = $('#email').val();
$.post("recebedados.php",
{name: name, email: email, message: message },
function(data) {
alert(data);
});
return false;
});</script>
Esse é um problema velho, existem dezenas de gambiarras que o pessoal comenta na Internet e que não funcionam ou são bastante complicadas…
Vejam uma solução prática, simples e funcional:
<?php
echo htmlentities(utf8_decode($_POST["message"]));
?> |
<?php
echo htmlentities(utf8_decode($_POST["message"]));
?>
Para exibir acentuação corretamente só precisamos fazer o tratamento dos dados no lado do servidor.
Curto e grosso!