Jquery игнорирует кодировку ISO-8859-1 - PullRequest
10 голосов
/ 24 января 2012

У меня есть веб-сайт, который удаляет правильную кодировку (ISO-8859-1) из строки и отправляет ее неправильно.

У меня есть эта кодировка, указанная в моем HTML

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

Я загружаю свой javascript через

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

Я отправляю для получения информации через JQuery Ajax Запрос, подобный этому (с немецким специальным символом 'ö' и 'ä'):

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

Этопереведенный в запрос, и в инструментах разработчика Chrome я вижу это в заголовке запроса:

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

Что там произошло?

Конечно, специальные символы закодированы неправильно ("ö"вместо "ö") сервер не может меня понять, и я получаю сообщение об ошибке.

Ответы [ 2 ]

28 голосов
/ 18 января 2013

Поскольку у меня была такая же проблема, я предоставлю решение, которое сработало для меня. Справочная информация: Microsoft Excel слишком глуп, чтобы экспортировать CSV-файл в кодировке 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');
    }
});
6 голосов
/ 24 января 2012

Согласно документации jQuery.ajax() contentType :

Данные всегда будут передаваться на сервер с использованием кодировки UTF-8;Вы должны декодировать это соответствующим образом на стороне сервера. "

...