Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

141
Vistas
Unicode over Ajax not rendering correctly

I have searched for anything related to this, but not found anything directly equivalent, and nothing that has helped. I have a very simple application that fetches data from the server using Ajax (vanilla Javascript) but the Unicode characters are not being transferred correctly. My reasoning is that this is a client side problem, because if I access the Ajax URL directly from a browser address bar, it displays correctly.

I have put a console.log into the Javascript as the first thing it does on receipt of a response, and it is already corrupted at this point. I have added xmlhttp.overrideMimeType('text/plain;charset=utf-8'); but that had no visible effect.

I have created a minimal web page that exhibits the behaviour and put it on my server at http://www.amberel.com/test/unicodetest.htm . Just press the button to execute the Ajax function. The Ajax URL is http://www.amberel.com/test/ajaxunicodetest.htm

This is the complete web page:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Ajax UTF-8 test</title>
  <meta name="viewport" id="viewport" content="width=device-width,initial-scale=1">
</head>

<body>

<div id="id-div-main">  
  <p>What it should look like: town=Chaitén</p>  
  <button type="button" onclick="buttonAjaxClick()">Ajax</button>
  <p id="id-p-response"></p>
</div>

</body>

</html>

<script>

function buttonAjaxClick()
{
  try {
    var xmlhttp;
  
    xmlhttp=new XMLHttpRequest();
    xmlhttp.open("GET", "ajaxunicodetest.htm", true);
    // Didn't make any difference
    // xmlhttp.overrideMimeType('text/plain;charset=utf-8');
    xmlhttp.send();
  
    xmlhttp.onreadystatechange=function() {
      if(xmlhttp.readyState == 4) {
        if(xmlhttp.status == 200) {
          console.log(xmlhttp.responseText);
          document.getElementById("id-p-response").innerHTML = "Ajax response: " + xmlhttp.responseText;
        }
        else if(xmlhttp.status == 404) {
          document.getElementById("id-p-response").innerHTML = "ajaxunicodetest.htm not found";
        }
        else {
          document.getElementById("id-p-response").innerHTML = "ajaxunicodetest status: " + xmlhttp.status;
        }
      }
    };
  }
  catch(err) {
    document.getElementById("id-p-response").innerHTML = "ajaxunicodetest: " + err;
  }
}

</script>

I would be most grateful for any ideas as to what to try next as I've been working on this for some time.

Many thanks, Andy

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

You have to write for overrideMimeType:

xmlhttp.overrideMimeType('text/xml; charset=iso-8859-1');

This answer first was written in comments, but after discussing with @Amberel, it worked for him, and we put it here so others can see it too.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda