Ajax bagunçar personagens noruegueses

votos
0

Eu estou tentando tirar os valores de um <textarea>e passá-lo via XMLHttpRequest para uma página PHP que adiciona o conteúdo para um banco de dados.

No entanto, quando atinge o banco de dados, os caracteres Um æ O são convertidos em à ¥ Ã| Ã.

Eu procurei alta e baixa e tentou mudar para UTF-8, tentou usar versões de JavaScript de htmlentities()/ htmlspacialchars()etc, mas não importa o que eu tento fazer, o resultado é sempre o mesmo.

Minha página está definido para iso-8859-15 eo mesmo é a requestType para o pedido.

Porque eu não tive que usar Ajax demais no meu trabalho, eu já cortou o procedimento de configuração da rede. Se parece com isso:

var page_request = false;
var contentType = application/x-www-form-urlencoded;charset=iso-8859-15;  

if (window.XMLHttpRequest)
{
  page_request = new XMLHttpRequest();
}

// If the Browser is Internet Explorer
else if (window.ActiveXObject)
{
  try
  {
    page_request = new ActiveXObject(Msxml2.XMLHTTP);
  }
  catch (e)
  {
    try
    {
      page_request = new ActiveXObject(Microsoft.XMLHTTP);
    }
    catch (e){}
  }
}
else 
{ 
  return false; 
}

page_request.open('POST', url, true);
page_request.setRequestHeader(Content-Type, contentType);
page_request.send(query);

No entanto, no arquivo PHP no fim de recepção e no banco de dados os caracteres especiais são convertidos.

Qualquer ajuda é muito apreciada! Eu passei a maior parte de hoje tentando corrigir este erro ...

Publicado 02/04/2009 em 12:09
fonte usuário
Em outras línguas...                            


3 respostas

votos
1

Seu delcaration charset está mentindo. Dizendo que o conteúdo é em ISO não magicamente torná-lo ISO.

Seu queryvariável parece estar em codificação UTF-8. Isso é de se esperar, porque cadeias de Javascript são sempre Unicode e funções como encodeURIComponent()(que são necessárias para formatar corretamente solicitações GET e POST) use UTF-8.

IMHO a melhor coisa é parar de usar codificações ISO, completamente, para sempre.

Se você não pode fazer isso ainda, você precisa serializar dados em Javascript-se ou converter UTF-8 para ISO quando receber dados postados no servidor.

Respondeu 02/04/2009 em 13:26
fonte usuário

votos
0

você precisa usar encodeURIComponentem seu textareaconteúdo. e usar UTF-8 também.

Respondeu 02/04/2009 em 12:25
fonte usuário

votos
-2

Primeiro de tudo, este site suporta destaque de sintaxe, mas apenas se você selecionar o código e clique na pequena 101 | 010 símbolo.

Em segundo lugar, eu recomendaria ISO-8859-1, mas eu não estou dizendo que é garantido para trabalhar ...

Respondeu 02/04/2009 em 12:21
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more