Проблема кодировки символов UTF-16 с FireFox - PullRequest
1 голос
/ 15 марта 2012

Я столкнулся с проблемой XML и Firefox в кодировке UTF-16, которую я не могу решить.

Я работаю с API веб-доступа TFS11, чтобы создать собственный элемент управления рабочим элементом. То, что должно быть неуместным, но достаточно сказать, что я не вправе связываться с какими-либо настройками веб-сервера или способом, которым приложение отправляет данные.

Общий рабочий процесс заключается в том, что элемент управления извлекает файл вложения, анализирует его как XML, а затем работает с XML, чтобы отобразить данные для конечного пользователя. Это все прекрасно работает в IE8, IE9 и Chrome. Однако в FireFox 11 это не так.

Вот фрагмент кода, который демонстрирует, как я беру свой XML и анализирую его:

$.ajax({
    url: uri,
    async: true,
    dataType: "text",
    complete: function (xhr, status) {
        if (xhr.responseText != null) {
            data = null; 
            if (window.DOMParser) {
                parser = new DOMParser();
                var responseText = xhr.responseText; 
                data = parser.parseFromString(responseText, "text/xml");
            }
        }
    }
});

Проблема в содержимом xhr.responseText. В FireFox он содержит ��<?�x�m�l� �v�e�r�s�i�o�n�=�"�1�.�0�"� �e�n�c�o�d�i�n�g�=�"�u�t�f�-�1�6�"�?�> (и т. Д.).

Первые два символа - FF FE. Я прочитал об этом, и я знаю, что это маркер порядка байтов. Чего я не понимаю, так это , почему я вижу это вместо правильно закодированного текста.

Вот мои заголовки ответа на запрос:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/octet-stream
Server: Microsoft-IIS/7.5
X-TFS-ProcessId: 0bc401d6-0b5d-47a4-85b8-114344957d22
X-AspNetMvc-Version: 3.0
Content-Disposition: attachment; filename=d187d991-550a-4f49-b379-3bea7f9518c8.xml
X-AspNet-Version: 4.0.30319
Persistent-Auth: true
X-Powered-By: ASP.NET
X-Content-Type-Options: nosniff
X-FRAME-OPTIONS: SAMEORIGIN
Date: Thu, 15 Mar 2012 17:15:00 GMT
Content-Length: 7520

Есть ли обходной путь для этого?

1 Ответ

3 голосов
/ 16 марта 2012

Отправить правильную кодировку в вашем ответе? Похоже, что Firefox не смотрит на спецификацию в ваших данных, поэтому не понимает, что ваши данные - UTF-16, а не UTF-8 ....

...