我有 API 服务器,其中响应任何具有 arraybuffer
格式的请求。
此 API 网络服务器在 Java 脚本中正常工作,如下所示:
xhrOverride.responseType = 'arraybuffer';
request = $.ajax({
url: url,
method: 'GET'
.
.
.
request .done(function(data) {
mydata = {
buffer: data,
};
myconverter(mydata );
}
.
.
.
function myconverter(data) {
const buffer = data.buffer;
let vals = new Uint32Array(data.buffer, 0, 5);
data.n = vals[0] / 1000 + vals[1] ;
let stride = vals[2];
data.x= vals[3];
let limits = new Int16Array(buffer, 20, 4);
data.city= limits[0];
data.united= limits[1];
data.vil= limits[2];
.
.
.
以上代码在 Java Script 中运行正常,但在 Python 中运行不正常,如下所示:
response = requests.get(url)
print(response.text)
输出:
��7DT�z !��?���{_s:x�0�Ɗ���$����Fp�@�Uk�K�u�jq,���k�,v��Z�j�...
我将响应转换为 base64,然后将 base64 转换为 UTF-8,但我的答案还是:
��7DT�z !��?���{_s:x�0�Ɗ���$����Fp�@�Uk�K�u�jq,���k�,v��Z�j�...
如何将响应转换为真正的字符串?
最佳答案
考虑将 ArrayBuffer
作为字符串发送/解析。这是 JS 实用程序,也许 Python 中的类似实用程序就足够了?
class ArrayBufferUtil {
static toString(buffer) {
return new Uint8Array(buffer).toString()
}
static parse(s) {
return new Uint8Array(
s.split(',').map(i => parseInt(i, 10))
).buffer
}
}
关于javascript - 如何将 arraybuffer 响应类型转换为 python 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66391157/