分块解码时,TextDecoder 为什么要传 stream: true?
流式读取 fetch 响应时,一个汉字的 UTF-8 字节可能被拆到两个 chunk 里,直接解码就会出现乱码。讲清 TextDecoder 的 stream: true 如何缓存半个字符、为什么必须复用同一个实例、最后为什么还要调一次 decode(),以及 SSE 场景下还要处理的半行问题。
核心关键词TextDecoder stream:true 分块解码多字节
JavaScript · 流处理面试题第 1 页,显示第 1–4 题,共找到 4 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
流式读取 fetch 响应时,一个汉字的 UTF-8 字节可能被拆到两个 chunk 里,直接解码就会出现乱码。讲清 TextDecoder 的 stream: true 如何缓存半个字符、为什么必须复用同一个实例、最后为什么还要调一次 decode(),以及 SSE 场景下还要处理的半行问题。
TextDecoder 遇到非法 UTF-8 字节默认不报错,而是替换成 U+FFFD 继续解码;开启 fatal 后才会抛 TypeError。讲清两种模式各适合什么场景,ignoreBOM 为什么名字容易理解反,以及编码选错时 fatal 为什么救不了你。
属性的 configurable 为 false 后,不能删除、改可枚举性或在数据属性与访问器之间切换。若它仍可写,值还可以改变,writable 也能从 true 降到 false;seal 和 freeze 会批量施加不同程度的类似限制。
给不可写属性赋值,在严格模式中抛 TypeError,非严格模式下通常静默失败;是否严格取决于赋值代码所在环境。原型上的只读属性也可能阻挡子对象同名赋值,Reflect.set 可用布尔返回值识别失败,configurable 与 freeze 又控制另外的边界。