【发布时间】:2021-02-18 18:33:29
【问题描述】:
我有 UTF-32 数据,一个数组缓冲区。我需要将其转换为 ECMAScript 字符串。
有人告诉我,我可以将 TextDecoder 与 UTF-8 一起使用,而且它应该“正常工作”,我非常怀疑告诉我这个的人,但它仍然有效。
除了...输出文本充满了空字符(每个字符 3 个),因为将空字节填充读取为空字符,而不是将整个四个字节作为一个字符读取。
前任:
\x70\x00\x00\x00
成为
PUTF-32;空填充被读取为一个字符
P\0\0\0UTF-8;分开
根据 whatwg 编码规范,UTF-32 没有定义为要使用的编码标签,而是只有 UTF-8 和 UTF-16,而不是 UTF-32,有没有人对我如何可以在浏览器中实现正确的 UTF-32 解码吗?
说清楚,我关心的是现代浏览器,所以不包括IE、Amaya、Android Webview、Netscape Navigator等。
【问题讨论】:
-
输入字节是 little-endian UTF-32 还是
Uint32Array(取决于平台)字节序? -
此库支持从 utf-32 转换:github.com/ashtuchkin/iconv-lite。它也适用于浏览器。
-
最坏的情况,你看看空值是什么样子的,所以你可以自己做一个渲染函数
-
例如:
function renderData(da){return(da.split(`\\0`).join(``))} -
@Ry- 现在,至于数据的字节序,我确信它是小字节序。给出的示例没有显示数据的字节序吗?如果有帮助的话,它是一个 Wasm 数据部分,所以我相信它不会依赖于平台,因为数据是硬编码到其中的,但我不确定浏览器如何处理它。
标签: javascript utf-32