来自 php 的 echo char(128) 及更高版本不起作用
echo char(128) and above from php does not work
我有一个服务器端 process.php 脚本回显两个字符:
echo chr(127);
echo chr(128);
在客户端,我有一个 java 脚本(html 页面中的 运行 使用 UTF-8 编码)发布到 php 脚本和期待回应:
const xhr = new XMLHttpRequest();
// post xhr to php, check for DONE and 200, and get the response
console.log(xhr.responseText);
对于 127,我得到的响应是一个字符串,其中一个字符代表预期的 127。
但是对于 128 及以上,它给了我 3 个字符,-17,-65 -67。梳理和拖网,但一无所获。很惊讶没有在网上找到任何关于从服务器向客户端传输字节的信息。我是一名桌面 C++ 程序员,顺便说一句,这让我很困惑!
因为你发送的是字节,所以你需要停止考虑文本和字符。 JavaScript 在内部是 UTF-16,您将通过 HTTP 从 PHP 传输文本,它可以设置自己的编码。
如果你想解析 raw bytes in JavaScript, you'll want to look into the ArrayBuffer. Once you receive your data, you can compose a DataView 它并获取字节。如果你只有 8 位,你也不用担心字节序问题。
const xhr = new XMLHttpRequest();
xhr
.addEventListener(
'load',
() => {
const buffer = xhr.response;
const view = new DataView( buffer );
const byte = view.getUint8( 0 );
console.dir( byte );
}
);
xhr.open( 'GET', '/my/end-point' );
xhr.responseType = 'arraybuffer';
xhr.send();
我有一个服务器端 process.php 脚本回显两个字符:
echo chr(127);
echo chr(128);
在客户端,我有一个 java 脚本(html 页面中的 运行 使用 UTF-8 编码)发布到 php 脚本和期待回应:
const xhr = new XMLHttpRequest();
// post xhr to php, check for DONE and 200, and get the response
console.log(xhr.responseText);
对于 127,我得到的响应是一个字符串,其中一个字符代表预期的 127。 但是对于 128 及以上,它给了我 3 个字符,-17,-65 -67。梳理和拖网,但一无所获。很惊讶没有在网上找到任何关于从服务器向客户端传输字节的信息。我是一名桌面 C++ 程序员,顺便说一句,这让我很困惑!
因为你发送的是字节,所以你需要停止考虑文本和字符。 JavaScript 在内部是 UTF-16,您将通过 HTTP 从 PHP 传输文本,它可以设置自己的编码。
如果你想解析 raw bytes in JavaScript, you'll want to look into the ArrayBuffer. Once you receive your data, you can compose a DataView 它并获取字节。如果你只有 8 位,你也不用担心字节序问题。
const xhr = new XMLHttpRequest();
xhr
.addEventListener(
'load',
() => {
const buffer = xhr.response;
const view = new DataView( buffer );
const byte = view.getUint8( 0 );
console.dir( byte );
}
);
xhr.open( 'GET', '/my/end-point' );
xhr.responseType = 'arraybuffer';
xhr.send();