9

Tengo un sitio web que aparentemente elimina la codificación correcta (ISO-8859-1) de una cadena y la envía mal.Jquery ignora la codificación ISO-8859-1

tengo esta codificación especificada en mi HTML

<meta charset="ISO-8859-1"> 

cargo mi Javascript través

<script type="text/javascript" charset="ISO-8859-1" src="... 

envío de información a través de jQuery Ajax solicitud como esta (con carácter especial alemán 'o' y 'a'):

$.ajax({ 
    url: '..', 
    type: 'POST', 
    contentType: 'application/xml;charset=ISO-8859-1', 
    data: xmlRequest.html(),... 

Esto se traduce en una solicitud y en el develope cromo r herramientas Veo esto en el Encabezado de solicitud:

.. 
Content-Type: application/xml;charset=UTF-8 
.. 

¿Qué pasó allí?

Por supuesto, los caracteres especiales están codificados incorrectamente ("ö" en lugar de "ö") el servidor no puede entenderme y me sale un error.

+0

usted tiene que configurar su cabecera servidores web .. usted no puede hacer eso con javascript es una característica serverside –

Respuesta

5

De acuerdo con la jQuery.ajax()contentType documentation:

de datos siempre se transmite al servidor utilizando juego de caracteres UTF-8; debe decodificar esto apropiadamente en el servidor. "

+0

¿es esta una Jquery-cosa o Ajax, en general – Spike2050

+1

de acuerdo con esa misma página de documentación? , "Los datos POST siempre se transmitirán al servidor utilizando el juego de caracteres UTF-8, según el estándar W3C XMLHTTPRequest." – JMM

24

Como tenía el mismo problema, proporcionaré una solución que funcionó para mí. Fondo: Microsoft Excel es demasiado estúpido para exportar un archivo CSV en juego de caracteres UTF-8:..

$.ajax({ 
    url: '...', 
    contentType: 'Content-type: text/plain; charset=iso-8859-1', 
    // This is the imporant part!!! 
    beforeSend: function(jqXHR) { 
     jqXHR.overrideMimeType('text/html;charset=iso-8859-1'); 
    } 
}); 
+1

Gracias por publicar esto! –

+1

Extraño pero funcionó :) – cem

+0

¿Cómo se hace esto sin jquery, directamente con 'XMLHttpRequest()'? –