XMLHttpRequest返回错误编码的字符

时间:2015-04-28 10:35:16

标签: javascript pdf utf-8 character-encoding xmlhttprequest

我使用XMLHttpRequest来阅读PDF文档 http://www.virtualmechanics.com/support/tutorials-spinner/Simple2.pdf

%PDF-1.3
%âãÏÓ
[...]

并将其内容打印到控制台:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
      console.log(xhr.responseText);
      console.log('âãÏÓ');
    }
};
xhr.open('GET', 'http://www.virtualmechanics.com/support/tutorials-spinner/Simple2.pdf', true);
xhr.send();

然而,控制台说

%PDF-1.3
%����
[...]
âãÏÓ

(最后一行来自上面的引用console.log,以验证控制台是否可以实际显示这些字符。) 显然,字符在某些时候被错误编码。出了什么问题以及如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您文件的MIME类型可能不是UTF-8。尝试按照建议here覆盖它,如下所示:

xhr.open('GET', 'http://www.virtualmechanics.com/support/tutorials-spinner/Simple2.pdf', true);
xhr.overrideMimeType('text/xml; charset=iso-8859-1');
xhr.send();

答案 1 :(得分:3)

XMLHttpRequest的默认响应类型是std::find_if(rects.begin(), rects.end(), [requested_size](const Rect &rect) { return requested_size==rect.size().area(); }); ,但这里实际上是处理二进制数据。 Eric Bidelman描述了如何使用它。

问题的解决方案是将数据读取为text,然后从blob中提取数据并将其插入Blob

hash.update(..., 'binary')