【发布时间】:2019-07-18 19:33:27
【问题描述】:
我想通过 JavaScript 将二进制数据从 html 页面发送到我的服务器,但服务器收到的字节不同。接收到的字节似乎被转换为 unicode 字符串,请参见以下示例:
xhr.open('POST', '/check', true);
xhr.setRequestHeader('cache-control', 'no-cache');
xhr.setRequestHeader('Content-Type', 'application/octet-stream');
xhr.send('\x41\xFE\x80');
服务器应该收到“Aþ€”,但它得到了A├¥┬Ç。
我测试了很多东西,比如:
//xhr.overrideMimeType('text/plain; charset=iso-8859-1');
//xhr.setRequestHeader('Content-type', 'text/plain; charset=iso-8859-1');
//xhr.setRequestHeader('Content-type', 'application/xml; charset=UTF-8');
//xhr.overrideMimeType('text/plain; charset=x-user-defined');
//xhr.overrideMimeType('text\/plain; charset=x-user-defined');
在服务器端我运行 plackup (http://localhost:5000/index.html),$env->{'CONTENT_LENGTH'} 是 5,所以服务器似乎真的得到了 5 个字节 A├¥┬Ç。
任何提示如何接收原始二进制数据都会很棒。
【问题讨论】:
-
是的,我知道这个样本并使用它。恕我直言,我的 Javascript 是正确的,可能是服务器上的脚本导致了这个错误......
标签: javascript ajax unicode binary