【发布时间】:2012-04-01 06:24:39
【问题描述】:
我遇到了一个似乎无法解决的 UTF-16 编码 XML 和 Firefox 问题。
我正在使用 TFS11 Web 访问 API 来创建自定义工作项控件。这应该是无关紧要的,但足以说明我无权扰乱任何网络服务器设置或应用程序发送数据的方式。
一般的工作流程是控件拉下附件文件,将其解析为 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
有解决办法吗?
【问题讨论】:
标签: javascript firefox utf-16 byte-order-mark