9

Ho un sito Web che rimuove la codifica corretta (ISO-8859-1) da una stringa e invia erroneamente.Jquery ignora la codifica ISO-8859-1

ho questa codifica specificata nel mio HTML

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

che carico il mio javascript tramite

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

mando per l'informazione tramite JQuery Ajax Request come questo (con carattere speciale tedesco 'O' e 'ä'):

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

Questo è tradotto in una richiesta e nello sviluppo di cromo r strumenti Lo vedo nell'intestazione della richiesta:

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

Che cosa è successo lì?

Ovviamente i caratteri speciali sono codificati errati ("ö" invece di "ö") il server non riesce a capirmi e ottengo un errore.

+0

è necessario impostare l'intestazione server web .. Non puoi farlo con javascript e 'una caratteristica serverside –

risposta

5

Secondo il jQuery.ajax()contentType documentation:

dati saranno sempre trasmessi al server utilizzando UTF-8 charset; è necessario decodificare questo modo appropriato sul lato server "

+0

È questo un Jquery-cosa o Ajax in generale – Spike2050

+1

Secondo questa stessa pagina di documentazione? , "I dati POST verranno sempre trasmessi al server usando il set di caratteri UTF-8, secondo lo standard W3C XMLHTTPRequest." – JMM

24

Perché ho avuto lo stesso problema, io vi fornirò una soluzione che ha funzionato per me Sfondo:.. Microsoft Excel è troppo stupido per esportare un file CSV in charset 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

Grazie per aver postato questo! –

+1

Strano ma funzionante :) – cem

+0

Come si fa a fare questo senza jquery, direttamente con un 'XMLHttpRequest()'? –