Ajax Norveççe karakterler karıştırmasını

3 Cevap php

Ben bir <textarea> değerleri almak ve bir veritabanına içerik ekler bir PHP sayfası XMLHttpRequest yoluyla geçmek için çalışıyorum.

"| Ã ¥ Ã" bu veritabanını ulaştığında Ancak, "A AE ø" karakterler dönüştürülür.

Ben yüksek ve düşük aradı ve htmlentities() / htmlspacialchars() vb JavaScript sürümlerini kullanmaya çalıştım, UTF-8 değiştirmeye çalıştım, ama deneyin ne olursa olsun, sonuç yapmak ettik her zaman aynıdır.

Benim sayfa iso-8859-15'e ayarlanır ve aynı istek için requestType olduğunu.

Ben işimde ajax çok kullanmak zorunda değil çünkü, ben net kurulum prosedürünü snipped ettik. Bu şuna benzer:

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

Ancak, alıcı ucunda PHP dosyası ve veritabanındaki özel karakterler dönüştürülür.

Herhangi bir yardım çok takdir! Ben bu hatayı düzeltmek için çalışırken, bu gün daha iyi parçası geçirdim ...

3 Cevap

Sizin charset delcaration yalan söylüyor. Bu içerik ISO olduğunu söyleyerek sihirli ISO yapmaz.

Sizin query değişken UTF-8 kodlaması gibi görünüyor. Javascript dizeleri her zaman Unicode ve encodeURIComponent() (düzgün GET ve POST istekleri biçimlendirmek için gerekli olan) gibi fonksiyonları UTF-8 kullanmak olmasıdır, beklenebilir.

Iyi şey sonsuza kadar, tamamen, ISO kodlamaları kullanarak durdurmak için IMHO.

Eğer henüz bunu yapamıyorsanız, size kendinizi JavaScript verileri veya seri sunucusuna gönderilen veri alırken ISO UTF-8 dönüştürmek gerekir.

Eğer textarea içeriği encodeURIComponent kullanmanız gerekir. ve de UTF-8 kullanmak.

Her şeyden önce, bu web sitesi sözdizimi vurgulamasını destekler, ancak kodu seçin ve küçük 101 tıklayın yalnızca | 010 sembol.

İkincisi, ben ISO-8859-1 tavsiye ederim, ama ben bu işe garanti demiyorum ...