9

Mam stronę internetową, która usuwa poprawne kodowanie (ISO-8859-1) z ciągu i wysyła błędnie.Jquery ignoruje kodowanie ISO-8859-1

mam ten kodowania określonego w moim HTML

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

załadować mój skrypt poprzez

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

wyślę do informacji za pośrednictwem JQuery Ajax Zamówienie tak (z niemieckiego znaku specjalnego 'O' i "ä"):

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

Zostało to przetłumaczone na żądanie i w chrome develope r narzędzia Widzę to w nagłówku żądania:

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

Co się tam stało?

Oczywiście znaki specjalne są kodowane źle ("¶" zamiast "ö") serwer nie może mnie zrozumieć i pojawia się błąd.

+0

trzeba ustawić nagłówek serwerach .. cant zrobić z javascript jest to cecha stronie serwera –

Odpowiedz

5

Według jQuery.ajax()contentType documentation:

dane zawsze będą przesyłane do serwera przy użyciu kodowania UTF-8; musisz to rozszyfrować po stronie serwera. "

+0

Czy to Jquery-Thing lub Ajax w ogóle – Spike2050

+1

Według tej samej stronie dokumentacji? , "Dane POST będą zawsze przesyłane do serwera przy użyciu zestawu znaków UTF-8, zgodnie ze standardem W3C XMLHTTPRequest." – JMM

24

Ponieważ miałem ten sam problem, dostarczę rozwiązanie, które zadziałało dla mnie. Tło: Microsoft Excel jest zbyt głupi, aby wyeksportować plik CSV w zestawie znaków 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

Dziękujemy za opublikowanie tego! –

+1

Dziwne, ale działało :) – cem

+0

Jak to zrobić bez jquery, bezpośrednio z 'XMLHttpRequest()'? –